記事の表示ページに関連記事を表示しようとしています。ユーザーが特定の記事を表示すると、データベース内のすべての関連記事がタグに従ってそのページ (右側のサイドバー) に表示されます (すべての記事には少なくとも 1 つのタグがあるため)。私のアプリにはタグと記事の間に関係があります (以下を参照してください)。 .
article_controller.rb
class ArticlesController < ApplicationController
before_filter :is_user_admin, only: [:new, :create, :edit, :destroy]
def is_user_admin
redirect_to(action: :index) unless current_user.try(:is_admin?)
return false
end
def index
@articles = Article.all(:order => "created_at DESC")
@article_titles = Article.first(10)
@tags = Tag.all
end
def show
@article = Article.find(params[:id])
end
def new
@article = Article.new
end
def create
@article = Article.new(params[:article])
@article.user_id = current_user.id
if @article.save
flash[:success] = "article created!"
redirect_to article_path(@article)
else
render 'new'
end
end
def destroy
@article = Article.find(params[:id])
@article.destroy
redirect_to action: 'index'
end
def edit
@article = Article.find(params[:id])
end
def update
@article = Article.find(params[:id])
if @article.update_attributes(params[:article])
flash.notice = "Article '#{@article.title}' Updated!"
redirect_to article_path(@article)
else
render 'edit'
end
end
end
tags_controller.rb
class TagsController < ApplicationController
#before_filter :user_signed_in, only: [:destroy]
def index
@tags = Tag.all
end
def show
@tag = Tag.find(params[:id])
end
end
schema.rb
ActiveRecord::Schema.define(:version => 20130411074056) do
create_table "articles", :force => true do |t|
t.string "title"
t.text "body"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.integer "user_id"
end
create_table "comments", :force => true do |t|
t.text "content"
t.integer "user_id"
t.string "article_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
create_table "taggings", :force => true do |t|
t.integer "tag_id"
t.integer "article_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
add_index "taggings", ["article_id"], :name => "index_taggings_on_article_id"
add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
create_table "tags", :force => true do |t|
t.string "name"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
article/show.html.erb :- ユーザーがタグに基づいて特定の記事を表示したときに、関連する記事を表示する必要がある場所
現在、articles/show.html.erb ページにはタグ名があり、db に同じタグを持つすべての記事を表示して、このページ (右側のバー) に表示したいと考えています。この関係を実装して関連する記事を取得する方法、このロジックをどこに記述し、ビューに実装する方法についてのアイデア。