在Rails 4中,通常我只通过使用以下代码声明私有函数来提交表单时允许某些参数:
params.require(:object).permit(:name, :email, :phone)
但是,我使用的是form_tag而不是form_for,因此每个字段都以params哈希值提交。由于我不是ruby / rails专家,以有效的方式允许这些参数的最佳方法是什么?
这是对的吗?
params.require(:params).permit(:name, :email, :phone)
答案 0 :(得分:3)
我认为这是正确的解决方案:
params.permit(:name, :email, :phone)
答案 1 :(得分:1)
您可以像Lichtamberg建议的那样更改params.permit
行,但是根据您的实现,您可能会破坏其他路由(尤其是RESTful路由)。如果这是唯一一个行为与此类似的页面(使用form_tag
),您可以做的一件事是通过传入名称来改变表单输入以匹配常规form_for
表单的结构。变量,如下:
<%= label_tag :object, :name %>
<%= text_field_tag :object, :name %>
然后会产生一个如下所示的参数图:
{
:object => {
:name => "tommyd456",
:email => "bla@bla.com"
...etc ...etc
这对原始的params.require(:object)
行完全有效。