目標は、各サブカテゴリ/サブカテゴリ内のコンテンツを印刷することです。
カテゴリのリストとサブカテゴリがあります。サブカテゴリとコンテンツには has_many :through 関係があります。1 つまたは複数のサブカテゴリをクリックして、関連するコンテンツを表示できるようにする必要があります。いくつかのことがわかりません:
1) サブカテゴリ コントローラを作成し、そこでフィルタリングを構築するか、コンテンツ コントローラを通過しますか?
2) カスタム ルートを作成する必要がありますか?
これが私が今持っているものです。
目次
create_table "contents", :force => true do |t|
t.string "title"
t.text "short_description"
t.text "long_description"
t.datetime "published_date"
t.datetime "edited_date"
t.string "read_length_time"
t.string "tag"
t.integer "author_id"
t.integer "contenttype_id"
t.string "collection"
t.integer "collection_id"
t.string "subcategory"
t.integer "subcategory_id"
t.boolean "published"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
t.string "image_file_name"
t.string "image_content_type"
t.integer "image_file_size"
t.datetime "image_updated_at"
t.string "infographic_file_name"
t.string "infographic_content_type"
t.integer "infographic_file_size"
t.datetime "infographic_updated_at"
t.string "video"
end
サブカテゴリ テーブル
create_table "subcategories", :force => true do |t|
t.string "title"
t.integer "category_id"
t.string "content"
t.integer "content_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
join table
create_table "subcats_contents", :id => false, :force => true do |t|
t.integer "subcategory_id"
t.integer "content_id"
end
add_index "subcats_contents", ["content_id"], :name => "index_subcats_contents_on_content_id"
add_index "subcats_contents", ["subcategory_id", "content_id"], :name => "index_subcats_contents_on_subcategory_id_and_content_id"
add_index "subcats_contents", ["subcategory_id"], :name => "index_subcats_contents_on_subcategory_id"
ルート.rb
match 'contents/filter_association/:id' => 'contents#filter_association', :as => 'filter_association', :via => :get
コンテンツコントローラー
def filter_association
@subcategory = Subcategory.find_by_id(params[:id])
Subcategory.where.merge(-> { joins(:content_id) })
respond_to do |format|
format.html
format.json { render json: @content }
end
end
サブカテゴリをクリックするためのビューは次のとおりです。
<table>
<% @subcategories.each do |subcategory| %>
<tr>
<td><%= subcategory.title %></td><br/>
<td><%= check_box_tag (:subcategory) %></td>
</tr>
<% end %>
<%= submit_tag "submit" %>
<table>
エラー: 引数の数が間違っています (1 に対して 0)