Nie*_*tra 6 ruby-on-rails nested-attributes ruby-on-rails-3
我在Rails中创建了一个嵌套模型,但我想在控制器中的嵌套模型中添加字段.我没有使用hidden_field_tag,因为它可能被篡改.
这是我的参数哈希:
Parameters: {"dummy"=>{"users_attributes"=>{"0"=>{"email"=>"jjjj@gmail.com", "id"=>"", "_destroy"=>"false"}, "1"=>{"email"=>"qqq@gmail.com", "id"=>"", "_destroy"=>"false"}}}, "commit"=>"Create Dummy"}
Run Code Online (Sandbox Code Playgroud)
我想要的是在每个user_attributes下有一个名为companyid的字段.假设我想让companyid成为"公司",那么我认为这样可行:
len = params["dummy"]["users_attributes"].size
counter = 0
while counter < len
params["dummy"]["users_attributes"][counter]["companyid" => "company"]
counter = counter + 1
end
Run Code Online (Sandbox Code Playgroud)
但是,我得到"未定义的方法`[]'为nil:nilClass"错误为while循环中的第一行.我不确定为什么.
有人可以帮助我,所以我可以修改params哈希?
编辑:所以,我终于明白了.我并没有真正使用任何解决方案.首先,我为hiddenid设置了hidden_field标记为空白.然后,在我的控制器中,我把:
params["dummy"]["users_attributes"].each do |key, val|
params["dummy"]["users_attributes"][key]["companyid"] = "company"
end
Run Code Online (Sandbox Code Playgroud)
不是最优雅的代码,但它会起作用.
params 哈希很特殊,因为(尤其是表单)它与相关的模型一对一映射,并且 Rails 期望存在一个数据库列,或者模型中具有该名称的方法。
隐藏字段是获取额外数据问题的典型解决方案,但如果您不希望用户看到这些字段,则会遇到 HTTP 无状态的问题。所以在这种情况下,他session[:something]是你的朋友。在显示可能包含隐藏数据的表单或页面之前,请将数据添加到会话变量(首先对其进行加密),然后在用户提交表单时可以读取(并解密)该变量。或者,您可以将其保存在数据库表中,并仅将行 ID 放入会话中,以便在发布表单时可以读回数据。
如果数据是模型的一部分,但您不想显示它,则可以只显示用户在视图中可以看到的部分,然后在用户提交时在控制器操作中查找其余部分表格或请求。
如果数据不敏感,您只需确保声明用户可以attr_accessible在各自的模型中更改的值(防止批量分配)并将其他值放入隐藏字段中。
| 归档时间: |
|
| 查看次数: |
6852 次 |
| 最近记录: |