我是Rails的新手,最近转向Rails 4强参数让我更加困惑。
我正在尝试设置帐户确认链接供人们点击。
我设置了以下路线:
rake routes
Prefix Verb URI Pattern Controller#Action
GET /users/:id/confirm/:confirmation_code(.:format) users#confirm
在我的UserController
中,我有一个confirm
操作,正在调用(我通过该操作中的简单重定向进行了测试),
以下是rails 4强参数:
private
def user_params
params.require(:user).permit(:name, :email, :password,
:password_confirmation, :confirmation_code)
end
但是当我尝试访问/users/1/confirm/foobar
param not found: user
我可以看到为什么我收到了错误,但是我不确定如何通过删除require(:user)
而不撤消强对数的安全性来解决它。如果我的基本方法是对的,我甚至都不是100%。
(我刚刚完成了Michael Hartl的rails教程,教程在用户控制器中有require(:user)
,我实际上并不确定删除它的安全隐患是什么)
答案 0 :(得分:2)
我认为您无需致电user_params
,因为该请求只是一个GET请求,因此params[:id]
和params[:confirmation_code]
无关紧要。您可以直接使用这些参数,无论它们是否为强参数。
答案 1 :(得分:0)
您展示的路线发出GET请求,不会有params[:user]
,只有params[:id]
和params[:confirmation_code]
,这是路线所定义的。
params[:user]
构建的表单发布回创建/更新操作,则会设置 form_for(@user)
。
问题是你在某个没有任何动作的动作中以某种方式调用方法user_params
。该方法本身正在按预期完成其工作。