rails显示所有具有当前类别ID的帖子

时间:2013-09-20 04:02:45

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我正在尝试显示具有当前类别的cat_id的帖子,而我并没有在一起点击正确的内容我猜。让我解释一下;

每个帖子在DB中都有一个cat_id,它将是该类别的ID。在我的页面上,如果我点击某个类别,则网址会变为类似的内容; http://domain.com/cat/1它应该显示类别1的所有帖子。

到目前为止,我已经尝试了以下但没有成功;

CONTROLLER

def show
    @cat = Cat.find(params[:id])
    @cat = Cat.all
    @posts = @cat.posts
end

查看

<div id="posts">
<% @posts.limit(50).each do |post| %>
    <h1><%= post.title %></h1>
<% end %>
</div>

上述情况没有成功。

我也试过了;

CONTROLLER

def show
    @cat = Cat.find(params[:id])
    @post = Post.find(params[:id])
end

查看

<div id="posts">
<% @bin.posts(:cat_id => cat.id).limit(50).each do |post| %>
    <h1><%= post.title %></h1>
<% end %>
</div>

也没有运气。我知道我很亲近,只是无法绕过它。

2 个答案:

答案 0 :(得分:2)

试试这个,我所做的就是删除用@cat覆盖Cat.all并使用其余查询将帖子限制移动到控制器:

<强> CONTROLLER

def show
    @cat = Cat.find(params[:id])
    @posts = @cat.posts.limit(50)
end

查看

<div id="posts">
<% @posts.each do |post| %>
    <h1><%= post.title %></h1>
<% end %>
</div>

答案 1 :(得分:0)

我假设您正在使用正确的模型关联。

如果您已设置模型以使帖子属于某个类别且某个类别包含许多此类帖子:

发布模型:

class Post < ActiveRecord::Base
   belongs_to :cat
end

猫模型:

class Cat < ActiveRecord::Base
   has_many :posts
end

然后你只需要使用这样的关联:

控制器:

def show
  @cat = Cat.find(params[:id])
  @posts = @cat.posts
end

查看:

<div id="posts">
  <% for post in @posts do %>
    <h1><%= post.title %></h1>
  <%end%>
</div>