-2

我有一个 Rails 3 博客应用程序,其中有文章和类别has_manybelongs_to association我有很多类别,如体育新闻、娱乐新闻等,但我希望在我的观点上只显示体育新闻,我的意思是有体育类别的文章要显示我希望它显示在我的 application.html.erb 上

class Category < ActiveRecord::Base
  has_many :registrations
  has_one  :payment
  attr_accessible :content, :name, :image, :description

   mount_uploader :image, ImageUploader

end
4

1 回答 1

0

如果您的关联定义如下:

class Category < ActiveRecord::Base
  has_many :articles
end

class Article < ActiveRecord::Base
  belongs_to :category
end

然后获取所有“体育新闻”文章就像这样简单:(进入您的控制器)

class SomeController < ApplicationController
  def index
    @sportnews_category = Category.where(name: "sportnews").first
    @sportnews_articles = @sportnews_category.articles
  end
end

或者:

@sportnews_category = Category.where(name: "sportnews").first
@sportnews_articles = Article.where(category_id: @sportnews_category)

你甚至可以定义一个范围:

class Article < ActiveRecord::Base
  belongs_to :category
  scope :sportnews, includes(:category).where(category: {name: "sportnews"})
end

@sportnews_articles = Article.sportnews

然后在你index.html.erb看来是这样的:

<% @sportnews_articles.each do |article| %>
  <h1><%= article.title %></h1>
  <p><%= article.content %></p>
<% end %>
于 2013-03-28T13:30:52.313 回答