不允许参数?
问题描述:
这是奇怪的我,所以我只是好奇,如果别人遇到了这一点:不允许参数?
我有以下几点:
def credential_params
params.required(:credential).permit(:name,:agent_ids)
end
在我的控制器创建和更新操作我使用质量分配上述参数调用...
@credential.update_attributes(credential_params)
但我仍然得到Unpermitted parameters: agent_ids
如果我更改为params.required(:credential).permit!
(即允许所有)当然它的作品。
我觉得我必须在这里俯瞰一些明显的疑难杂症......谁知道它可能是什么?
答
明白了。
数组是不是supported types之一:
允许的标量类型包括字符串,符号,NilClass,数值,TrueClass,FalseClass,日期,时间,日期时间,StringIO的,IO,ActionDispatch :: Http :: UploadedFile和Rack :: Test :: UploadedFile。
因此该解决方案是指定一个数组,像这样:
params.require(:credential).permit(:name, :agent_ids => [])
希望别人发现这很有用。
不应该说是'require'? – jvnill 2013-03-13 02:52:44
@jvnill - 看完文档后,应该是,但你知道吗?它也按'必需'的方式工作。我不知道这是否是一个错误或功能... – Andrew 2013-03-13 02:55:14
@jvnill:这是一个特点,'required'是'require'的别名,看近来源:https://github.com/rails/strong_parameters/blob/主/ lib目录/ action_controller/parameters.rb#L58 – Andrew 2013-03-13 02:59:16