在 rails 视图中打印多维数组
Posted
技术标签:
【中文标题】在 rails 视图中打印多维数组【英文标题】:Print multidimensional array in rails views 【发布时间】:2014-05-05 16:33:09 【问题描述】:在我的控制器中我这样做:
@categories = Category.all
for i in @categories.min.id..@categories.max.id
@allposts.push(Post.where(:Category => i))
end
在视图中(haml)我愿意
<% @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
?在您创建为|posts, slots|
的块内...
@Saska 如果Category
与模型Post
和1-M relationship
相关联,那么您可以简单地循环@categories
就像@categories.each do |category|
category.posts
以获取与给定关联的所有帖子类别。为什么要制作多维数组并将其复杂化?
【参考方案1】:
你还没有在方法中定义@slots
。也许你的意思是slots
。
<% @allposts.each do |posts, slots| %>
<% slots.each do |post| %>
<%= post.Title %>
<% end %>
<% end %>
【讨论】:
【参考方案2】:修正是:
<% @allposts.each do |posts, slots| %>
<% slots.each do |post| %> # <--- see I removed @ symbol
<%= post.Title %>
<% end %>
<% end %>
您的块变量是slots
,您尝试使用@slots
。我认为这是一个错字。由于没有定义这样的@slots
变量,所以当你想使用它时,你得到了nil
。局部变量和实例变量之间有一个甜蜜的区别。如果你没有在任何地方定义一个局部变量,比如foo
,如果你想在其他任何地方使用foo
,你最终会得到未定义的局部变量或方法。但是对于实例变量,没有错误,你会默默得到nil
。
【讨论】:
比你的答案落后 41 秒 :) @Pavan 是的.. 可能会少 10 秒.. 我的鼠标右键不起作用.. :)以上是关于在 rails 视图中打印多维数组的主要内容,如果未能解决你的问题,请参考以下文章