我有一个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
答案 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/4
或yoursite.com/categories/sports
等网页}}。在此页面下将列出所有相关的体育文章,当点击它们时,用户将被带到该文章的节目页面。