无法链接到属于某个类别的对象

时间:2013-01-15 15:49:42

标签: ruby-on-rails ruby-on-rails-3 relationship rails-activerecord

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

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

并且params正在传递

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

1 个答案:

答案 0 :(得分:1)

因此,您需要执行show操作

@category = Category.where(:name => params[:id]).first
# etc