Ruby on rails 按类别显示所有帖子

Ruby on rails 按类别显示所有帖子,ruby-on-rails,ruby,ruby-on-rails-3,activerecord,Ruby On Rails,Ruby,Ruby On Rails 3,Activerecord,我有一个帖子模型和一个分类模型 class Category < ActiveRecord::Base has_many :posts attr_accessible :name end Class Post < ActiveRecord::Base belongs_to :category attr_accessible :comments, :title, :category_id, :user_id, :photo end 我想实现的是单击一个类别,然后它将

我有一个帖子模型和一个分类模型

class Category < ActiveRecord::Base
  has_many :posts
  attr_accessible :name

end

Class Post < ActiveRecord::Base
 belongs_to :category
 attr_accessible :comments, :title, :category_id, :user_id, :photo

end
我想实现的是单击一个类别,然后它将显示属于该类别的所有帖子,此时单击我得到的类别链接

Mysql2::Error: Unknown column 'posts.name' in 'where clause': SELECT `posts`.* FROM `posts`  WHERE `posts`.`name` = 'Ruby'

你可以用同样的方法来做

<% @categories.each do |c| %>
 <li><%= link_to c, blog_path(:category_id => c.id) %></li>
<% end %>

你可以用同样的方法来做

<% @categories.each do |c| %>
 <li><%= link_to c, blog_path(:category_id => c.id) %></li>
<% end %>

你必须更换这条线

@posts = Post.where(:name => params[:name])


你必须更换这条线

@posts = Post.where(:name => params[:name])


您还没有说明您的问题吗?:)我在问题的底部添加了一些小的更新,但我认为这很直接?我想点击一个分类链接,即Ruby,然后它会显示所有具有该分类的帖子。看起来你的帖子表没有名称列。您添加了列并运行迁移了吗?@Neo是的,这是因为名称是类别模型中的一个属性,而不是posts模型,我正在尝试使用if/else语句根据您在上一个问题中提供的答案构建您的问题:)我在问题的底部添加了一些小的更新,但我认为这很直接?我想点击一个分类链接,即Ruby,然后它会显示所有具有该分类的帖子。看起来你的帖子表没有名称列。你添加了列并运行迁移了吗?@Neo是的,这是因为名称是类别模型中的一个属性,而不是posts模型,我试图使用if/else语句根据你在上一个问题中提供的答案进行构建
@posts = Post.where(:name => params[:name])
category = Category.where(:name => params[:name]).first
@posts = category.posts