0

私は記事とカテゴリ "category belongs_to :article" 記事 has_many :category を持つ Rails 3 ブログ アプリケーションを持っています。 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 %>

category#show アクションに以下を追加します。

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

@articles次に、対応する category#show ビューで変数を反復処理することにより、これらの記事をすべて表示できます。たとえば、いくつかの div にリンクとして追加します。

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

show アクションの article コントローラーでも同じことを行います。

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

したがって、基本的にユーザーには「スポーツ」というリンクが表示され、それをクリックすると、yoursite.com/categories/4またはyoursite.com/categories/sportsを使用している場合などのページに移動しますfriendly_id。このページの下に、関連するすべてのスポーツ記事が一覧表示され、ユーザーがクリックすると、その記事のショー ページが表示されます。

于 2013-04-12T14:23:37.503 に答える