Ruby on rails 如何解析这个哈希数组?
我有以下哈希数组,需要解析所有非空电子邮件:Ruby on rails 如何解析这个哈希数组?,ruby-on-rails,ruby,arrays,parsing,hash,Ruby On Rails,Ruby,Arrays,Parsing,Hash,我有以下哈希数组,需要解析所有非空电子邮件: [{:id=>"something", :first_name=>"First", :last_name=>"Name", :name=>"First Name", :email=>"first_name@gmail.com", :gender=>nil, :birthday=>nil, :profile_picture=>nil, :relation=>nil}, {...}, {}] 我正
[{:id=>"something", :first_name=>"First", :last_name=>"Name", :name=>"First Name", :email=>"first_name@gmail.com", :gender=>nil, :birthday=>nil, :profile_picture=>nil, :relation=>nil},
{...},
{}]
我正试图这样做:
- @contacts[0].each_with_index do |c, i|
- unless c[:email].blank?
%tr
%td= c[:email]
%td= check_box_tag "email_to[]", c[:email], true
但我得到了一个错误:
An ActionView::Template::Error occurred in users#parse_data:
no implicit conversion of Symbol into Integer
如何正确操作?当您在散列上说
每个带有索引的\u时,您将得到如下数组
@contacts.each_with_index do |c, i| ...
{:id=>"something", :first_name=>"First", :last_name=>"Name"}.each_with_index{|e,i| p e}
[:id, "something"]
[:first_name, "First"]
[:last_name, "Name"]
因此,您不能说e[:id]
,这就是错误的原因。如上所述,@contacts[0]
将为您提供哈希而不是数组。在视图中进行大量处理不是一个好的设计。使用简单的条件和循环是可以理解的,但是在控制器中应该进行繁重的处理
使用以下内容:
ary = [
{:id=>"something", :first_name=>"First", :last_name=>"Name", :name=>"First Name", :email=>"first_name@gmail.com", :gender=>nil, :birthday=>nil, :profile_picture=>nil, :relation=>nil},
{:id=>"something", :first_name=>"First", :last_name=>"Name", :name=>"First Name", :email=>"", :gender=>nil, :birthday=>nil, :profile_picture=>nil, :relation=>nil},
{}
]
viewable_email = ary.reject{ |e| e.empty? || e['email'].empty? }
此时,可查看的电子邮件将只包含要显示的哈希值。您的视图只会在它们上面循环。我希望看到编写的代码,以便在将结果传递给您的视图之前,您可以拒绝
或在控制器中选择适当的数组项。我同意@theTinMan。固定触点,使其正确,而不是在视图中进行调整,因为视图很乱。