尝试显示数组时Rails TypeError

时间:2014-02-23 15:30:13

标签: ruby-on-rails-4

我尝试在Rails中创建和显示错误,我有一个问题。

这是我的代码:

控制器:

flash[:errors] = []
flash[:errors] << [:message => t('clubs.errors.no_contact'), :strong => new_member_params[:email] + ': ']

视图:

<% if flash[:errors].present? %>
        <% flash[:errors].each do |error| %>
        <div class="alert alert-danger">
            <a class="close" aria-hidden="true" href="#" data-dismiss="alert">×</a>
            <strong><%= error[:strong] %></strong>
            <%= error[:message] %>
        </div>
        <% end %>
    <% end %>

我有这个错误:

TypeError in Clubs#members
no implicit conversion of Symbol into Integer

在这一行:

<strong><%= error[:strong] %></strong>

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果您在执行此操作后查看flash [:errors]:

flash[:errors] << [:message => t('clubs.errors.no_contact'), :strong => new_member_params[:email] + ': ']

它可能看起来像[[{message: 'no_contact'}]],因为你将哈希包装在方括号中......基本上将哈希放在数组中的数组中。我想你想要做的就是更改上面的那一行,这样你就可以在数组中附加一个Hash而不是一个哈希,如下所示:

flash[:errors] << { :message => t('clubs.errors.no_contact'), :strong => (new_member_params[:email] + ': ') }