如何在rails 4控制器中覆盖params?
以下似乎不起作用:
params[:post_type_id] = 2
@post = current_user.posts.new(post_params)
即使我手动设置,也会引发Post type can't be blank
错误。
以下是我的强参数函数:
def post_params
params.require(:post).permit(:title, :body, :post_type_id)
end
答案 0 :(得分:2)
问题在于permit
。它返回一个新的哈希值,所以你实际上并没有改变params变量(不管怎样它都不是正常变量)
这可以通过以下方式轻松解决:
post_details = post_params
post_details[:post_type_id] = 2
@post = current_user.posts.new(post_details)