在rails视图中打印多维数组



在我的控制器中,我这样做:

@categories = Category.all
for i in @categories.min.id..@categories.max.id
   @allposts.push(Post.where(:Category => i))
end

在views(haml) i do

<% @allposts.each do |posts, slots| %>
  <% @slots.each do |post| %>
    <%= post.Title %>
  <% end %>
<% end %>

我看到这个错误:

undefined method `each' for nil:NilClass on @slots.each do |post|.

提前感谢。

您没有在方法中定义@slots。也许你指的是slots

<% @allposts.each do |posts, slots| %>
  <% slots.each do |post| %>
    <%= post.Title %>
  <% end %>
<% end %>

修复方法:

<% @allposts.each do |posts, slots| %>
  <% slots.each do |post| %>  # <--- see I removed @ symbol
    <%= post.Title %>
  <% end %>
<% end %>

您的块变量是slots,而您尝试使用@slots。我想这是一个错别字。由于没有定义这样的@slots变量,当您想使用它时,您得到了nil。局部变量和实例变量之间有一个微妙的区别。如果您没有在任何地方定义局部变量(例如foo),那么如果您想在其他地方使用foo,则最终会得到未定义的局部变量或方法。但是对于实例变量,没有错误,您将默默地得到nil

相关内容

  • 没有找到相关文章

最新更新