質問:
post.rb
新しいモデル:と既存の 2 つのモデル: カテゴリ + 作業モデルの間に関連付けを作成するにはどうすればよいですか? ->パーシャルから一意の投稿を追加できるように、post.rb
の属性をどのように取得しますか?content:text
work#new
_form
work
とcategory
モデルの間に多対多の関係があります:through categorywork
post
という属性で呼び出される新しいモデルを追加したいとcontent:text
思います。このモデルの関連付けは次のようになります。すべての作品には多くのカテゴリがあり、作品内の各カテゴリには固有の投稿があります。
残念ながら、この関連性を適切に描き出す方法や説明する方法がわからないので、参考までにその場しのぎのスキーマを下に図と一緒に描きます。
例: テキスト参照
一作品
- 名前:プロジェクトA
多くのカテゴリ
- プロジェクトA -> カテゴリ名:UxD
- プロジェクトA -> カテゴリ名:ID
- プロジェクトA -> カテゴリ名:開発
ユニークな投稿
- プロジェクト A -> UxD -> 投稿内容:lorem ipsum 1
- プロジェクト A -> ID -> 投稿内容:lorem ipsum 2
- プロジェクト A -> 開発-> 投稿内容:lorem ipsum 3
例: グラフィカル リファレンス
仕事#索引
work#show?category1
work#show?category2
モデル
post.rb
既存の多対多の関係に接続するための関連付けをどのように記述すればよいでしょうか
class Category < ActiveRecord::Base
validates :name, :presence => true
has_many :categoryworks
has_many :works, :through => :categoryworks
accepts_nested_attributes_for :works
attr_accessible :description, :name, :category_ids, :svg
end
class Categorywork < ActiveRecord::Base
validates :name, :presence => true
has_many :categoryworks
has_many :categories, :through => :categoryworks
accepts_nested_attributes_for :categories
attr_accessible :name, :subtitle, :category_ids, :svg
end
class Categorywork < ActiveRecord::Base
belongs_to :category
belongs_to :work
attr_accessible :category_id, :work_id
end
コントローラー
works_controller : 新しいコントローラーでの多対多の関連付けの例
attr content:textwork_controller.rb
にアクセスするには何を追加しますか?post.rb
def new
@work = Work.new
@all_categories = Category.all
@work_category = @work.categoryworks.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @work }
end
end
ビュー
_form Partial :カテゴリと作品間の多対多を表示
post.rb
このフォームの各チェック ボックスに attr content:text を追加するには、何を書きますか
<div class="field">
<%= hidden_field_tag "work[category_ids][]", nil %>
<% Category.all.each do |category| %>
<%= check_box_tag "work[category_ids][]", category.id, @work.category_ids.include?(category.id), id: dom_id(category) %>
<%= label_tag dom_id(category), category.name %><br>
<% end %>
</div>