1

目標は、各サブカテゴリ/サブカテゴリ内のコンテンツを印刷することです。

カテゴリのリストとサブカテゴリがあります。サブカテゴリとコンテンツには 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)

4

1 に答える 1

0

where メソッドにパラメーターを渡さなかったため、エラーが発生しました。

私の理解が正しければ、ユーザー フォームからサブカテゴリのリストを受け取り、それらのサブカテゴリに関連付けられたすべてのコンテンツのリストを取得したいと考えています。

Content.joins(:subcategories).where(:subcategories => {:id => <variable with subcategory ids>}).group(:content => :id)
于 2013-09-09T21:55:47.730 に答える