use*_*963 5 ruby ruby-on-rails
我有
item_params = {
"name" => "",
"description" => "",
"tag_list" => "",
"user_items_attributes" => {"0" => {"user_id" => "8"}},
"created_by" => 8,
"status" => 0
}
Run Code Online (Sandbox Code Playgroud)
我想访问user_id来更改它.
我试过params[:item][:user_items_attributes][0]但它不起作用.我也试过了params[:item][:user_items_attributes][0][:user_id].改变的正确方法是user_id什么?
Sha*_*ell 10
值params[:item][:user_items_attributes]是将字符串映射到散列的哈希值.您正尝试使用整数0而不是'0':
params[:item][:user_items_attributes]['0']
=> {"user_id"=>"8"}
Run Code Online (Sandbox Code Playgroud)
您经常可以使用符号键访问哈希,而不是因为rails的HashWithIndifferentAccess检查哈希值而显示的字符串键,但在这种情况下您需要使用字符串作为键.
小智 5
从Ruby 2.3.0开始,您可以使用Hash#dig比通过访问更安全的方法Hash#[]。您可以在此处找到一些有用的示例。
在您的情况下,它将看起来像:
user_id = item_params.dig("user_items_attributes", "0", "user_id")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4759 次 |
| 最近记录: |