我有以下代码:
params.require(:posting_status).permit(:email, :craig_password, :mail_password, :posting_id, post_to:[])
此行不会出现语法错误,但在我喜欢的时候:
params.require(:posting_status).permit(:email, :craig_password, :mail_password, post_to:[], :posting_id)
这给出了语法错误,找不到原因。
答案 0 :(得分:1)
在第一种情况下,您在开头使用了符号,在结尾使用了(隐式!)哈希。
在第二种情况下隐式哈希不在最后。 显式哈希解决了这个问题。
params.require(:posting_status).permit(:email,:craig_password,:mail_password,{post_to:[]},:posting_id)
P.S。 'permit'方法的源代码:
文件actionpack / lib / action_controller / metal / strong_parameters.rb,第325行
def permit(*filters)
params = self.class.new
filters.flatten.each do |filter|
case filter
when Symbol, String
permitted_scalar_filter(params, filter)
when Hash then
hash_filter(params, filter)
end
end
unpermitted_parameters!(params) if self.class.action_on_unpermitted_parameters
params.permit!
end