如何在我的视图中输出特定类别?

时间:2013-04-12 14:20:23

标签: ruby ruby-on-rails-3

我有一个rails 3博客应用程序,其中有文章和类别“category belongs_to:article”文章has_many:类别,现在我有不同的类别,其中包含许多文章,例如体育类别,其中包含所有体育文章,我想要的是什么应用程序布局我想在div上只显示运动文章,请告诉我如何去做。谢谢......

class Article < ActiveRecord::Base
  attr_accessible :category_id, :content, :excerpt, :title, :image, :remote_image_url 
  mount_uploader :image, ImageUploader
  belongs_to :category
  validates :title, :content, :excerpt,  :category_id,  presence: true
  validates :title, uniqueness: true

  extend FriendlyId
  friendly_id :title, use: [:slugged, :history]

  def long_title
    " #{title} - #{created_at}   "   
  end
end  

1 个答案:

答案 0 :(得分:0)

根据您的评论更新:

第一步,获取所有类别,假设您在类别#index action:

中执行此操作
def index
  @categories = Category.all
end

现在我们将在#index视图类别中使用该类别的名称链接到每个类别。当用户点击某个类别时,他们将被带到该类别的显示页面,我们将列出所有相关文章:

<% @categories.each do |category| %>
  <%= link_to category.name, category %>
<% end %>

我们在#show action:

类别中添加以下内容
def show
  @category = Category.includes(:articles).find(params[:id])
  @articles = @category.articles
end

然后,您可以通过迭代相应类别#show视图中的@articles变量来显示所有这些文章。例如,将它们添加为某个div中的链接:

<div class="articles">
  <% @articles.each do |article| %>
    <%= link_to article.title, article %><br>
  <% end %>
</div>

现在在show action的文章控制器中执行相同的操作:

def show
  @article = Article.find(params[:id])
end

因此,基本上用户会看到一个显示“体育”的链接,当他点击它时,如果您使用{{1},他将被带到yoursite.com/categories/4yoursite.com/categories/sports等网页}}。在此页面下将列出所有相关的体育文章,当点击它们时,用户将被带到该文章的节目页面。