0

我正在尝试显示具有当前类别的 :cat_id 的帖子,但我猜我并没有一起点击正确的东西。让我解释;

每个帖子在 DB 中都有一个 cat_id,它将是类别的 ID。在我的页面上,如果我单击一个类别,则 url 会更改为;http://domain.com/cat/1并且它应该显示类别 1 的所有帖子。

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

控制器

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>

以上没有成功。

我也试过;

控制器

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>

也没有运气。我知道我已经接近了,只是无法绕过它。

4

2 回答 2

2

试试这个,我所做的就是删除 with 的覆盖@cat并将Cat.allpost 限制与其余查询一起移动到控制器:

控制器

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>
于 2013-09-20T04:12:14.167 回答
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>
于 2013-09-20T04:17:09.690 回答