轨道上的红宝石 - 无法链接到属于某个类别的对象



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

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 %>

这会把我带到类别控制器的show动作

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

和显示动作

的视图
  <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>

例如,当我点击"Computing"时,我得到

 undefined method `books' for nil:NilClass

和参数被作为

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

所以你需要在你的show action

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

相关内容

  • 没有找到相关文章

最新更新