0

我有一种方法可以将我所有的书籍类别组合在一起

def self.categories_list
joins(:books).
select('categories.id, categories.name, count(*) AS books_count').
group('categories.id, categories.name').
order('books_count DESC')
end

然后我可以像这样将它们输出到我的视图中

@bookcategories = Category.categories_list

然后我想做的是通过单击视图中的“计算”链接到属于“计算”的所有书籍

<% @bookcategories.each do |b| %>
  <li><%= link_to b.name, category_path(b.name) %></li>
<% end %>

这应该带我进入我的类别控制器的显示操作

  def show
  @category = Category.where(:name => params[:name]).first
  @categorisedbooks = @category.books #get me all books that have the category name
  end

以及 show 动作的视图

  <div class="container">
   <div class="row ">
    <div class="span12">     
     <% @categorisedbooks.each do |c| %>
      <%= image_tag c.avatar.url(:medium), :class=> "allBooksCover" %>
     <% end %>
   </div>
  </div>
 </div>

因此,例如,当我单击“计算”时,我得到

 undefined method `books' for nil:NilClass

并且参数被传递为

  Parameters:{"id"=>"Computing"}
4

1 回答 1

1

所以,你需要在你的show行动

@category = Category.where(:name => params[:id]).first
# etc
于 2013-01-15T15:53:08.977 回答