0

我有一个 Rails 3 博客应用程序,其中有文章和类别“类别属于_to:文章”文章 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  
4

1 回答 1

0

根据您的评论更新:

第一步,获取所有类别,假设您在 categories#index 操作中执行此操作:

def index
  @categories = Category.all
end

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

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

我们在 categories#show 操作中添加以下内容:

def show
  @category = Category.includes(:articles).find(params[:id])
  @articles = @category.articles
end

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

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

现在在文章控制器中为显示操作执行相同的操作:

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

所以基本上用户会看到一个显示“体育”的链接,当他点击它时,他将被带到一个页面,比如yoursite.com/categories/4或者yoursite.com/categories/sports如果你正在使用friendly_id. 在此页面下将列出所有相关的体育文章,当点击它们时,用户将被带到该文章的显示页面。

于 2013-04-12T14:23:37.503 回答