Ruby on rails 3.2 Rails:读取哈希
我的控制器中有一个哈希数据:Ruby on rails 3.2 Rails:读取哈希,ruby-on-rails-3.2,Ruby On Rails 3.2,我的控制器中有一个哈希数据: "accept"=>["{:id=>\"12f310f1d9b8f\", :first_name=>\"San\", :last_name=>\"Jori\", :name=>\"Jori,Santosh\", :email=>\"san.jori@west.com\", :gender=>nil, :birthday=>nil, :profile_picture=>nil, :relation=>
"accept"=>["{:id=>\"12f310f1d9b8f\",
:first_name=>\"San\",
:last_name=>\"Jori\",
:name=>\"Jori,Santosh\",
:email=>\"san.jori@west.com\",
:gender=>nil,
:birthday=>nil,
:profile_picture=>nil,
:relation=>nil}"],
但是我看不懂
我试着这样读:
if params[:accept].present?
params[:accept].each do |customer|
@customer = current_user.customers.new(:name => customer[:name], :email => customer[:email])
end
end
但它给出了错误:
no implicit conversion of Symbol into Integer
有人帮忙吗?请。首先,在您的示例中,哈希名称是
accept
而不是customer
。这是从一个更大的变量中提取的吗?是params哈希吗
其次,它是一个散列数组,因此您需要从数组中获取一个散列结果集以供使用。你是怎么做到的?在您的示例中,客户对象是什么?这可能是错误的原因,您正试图访问哈希样式的键,但您正在对数组执行此操作,需要一个int键才能访问特定的成员,如下所示:customer=accept[0]#数组中的第一个哈希
或内联假设customer
=accept
:
@customer = current_user.customers.new(:name => customer[0][:name], :email => customer[0][:email])
也就是说,如果所有哈希键都与客户对象属性匹配,那么您可以直接将哈希传递给客户。新的方法:
@customer = current_user.customers.new(accept)
这通常在控制器create
操作中完成,如下所示:
def create
@customer = Customer.new(params[:customer])
...
end
是的,accept是一个散列数组,我想读取每个散列中的值。它包含许多参数,我需要其中的“名称”和“电子邮件”。因此,我无法传递new(accept)或new(params[:customer])是否有任何方法可以在循环中运行此::name=>customer[0][:name],:email=>customer[0][:email]。我已经用我正在使用的循环更新了这个问题。发布完整的参数,在你的例子中,摘录的哈希包含在引号中,这将使它成为一个字符串。。。在您的代码中输出accept
对象的类名,并告诉我结果puts params[:accept]。class
和puts params[:accept][0]。class
嘿,我在视图中尝试了这个方法:>但结果为零。你能告诉我把它放在哪里吗?我得到这个:参数的o/p[:accept]是--“{:id=>\”base/112f310f1d9b8f\”,:first\u name=>\“San\”,:last\u name=>\“Jori\”,:name=>\“Jori,San\”,:email=>San。jori@west.com\“,:gender=>nil,:birth=>nil,:profile\u picture=>nil,:relation=>nil}”{:id=>“2293b58ce3aa28\,:first\u name=>“Yog\”,:last\u name=>Shel\,:name=>“Yog Shel\”,:email=>\“yog。shel99@gmail.com\“,:gender=>nil,:birth=>nil,:profile_picture=>nil,:relation=>nil}”