【问题标题】:Rails 3 -- for loop giving an Undefined method 'each'Rails 3——for循环给出一个未定义的方法“每个”
【发布时间】:2012-06-09 03:15:37
【问题描述】:

Rails -v 3.2.3

我试图在我的视图中显示表格内的链接 我不断得到 NoMethodError in Links#submissions , views/links/submissions.html.erb where line #10 raised: undefined method "each" for nil:NilClass

这是我的submission.htm.erb

<table>
<% @links.each do |link| %>
  <tr valign = "top">
    <td>
      <%= link_to_remote "Up",
                        :url => { :action => 'modify_points',
                               :id => link.id,
                               :by => 1 },
                    :update => "link" + link.id.to_s %>
</td>
<td>
  <%= link_to_remote "Down",
                    :url => { :action => 'modify_points',
                              :id => link.id,
                              :by => -1 },
                    :update => "link" + link.id.to_s %>

</td>

<td>
  <b> <a href="<%= link.url %>"> <%= link.description %> </a> </b>
  (<%= if link.url =~ /(:\/\/) ([^\/]*)/ then $2 else "wrong URL" end %>) <br/>
  <span id="link"><%= link.id.to_s %>"%><%= link.points %> </span>
  points posted <%= time_ago_in_words link.created_at %> ago
</td>

  </tr>
<% end %>
</table>

我的问题是....如果没有链接,我是否需要编写一些代码?这就是我收到此错误消息的原因吗?

【问题讨论】:

  • 取决于@links 是什么;如果它是一个关联,如果没有,它应该是一个空数组。你如何初始化它?
  • @links 在 links_controller.rb 中的一个名为 submit @link_pages, @links = Link.page(params[:page]).per(20) 的方法中初始化

标签: ruby-on-rails-3 for-loop nomethoderror


【解决方案1】:

是的,如果您不知道上下文中是否存在@links,总比抱歉更安全。

<% if @links.present? %>
  <% @links.each do |link|
    etc 
  <% end %>
<% end %>

等等...也许有一些更好的红宝石速记。如果这样的话,我相信有人会提醒我们。 :)

【讨论】:

    猜你喜欢
    • 2020-10-17
    • 1970-01-01
    • 2015-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多