[解決済み] Railsのネストされたフォームでhas_many :sroughを使用して、結合モデルの属性を編集するにはどうすればよいですか?
2022-11-28 16:18:11
質問
accepts_nested_attributes_forを使用する場合、結合モデルの属性をどのように編集するのですか?
3つのモデルを持っています。トピックと記事がリンカーによって結合されています。
class Topic < ActiveRecord::Base
has_many :linkers
has_many :articles, :through => :linkers, :foreign_key => :article_id
accepts_nested_attributes_for :articles
end
class Article < ActiveRecord::Base
has_many :linkers
has_many :topics, :through => :linkers, :foreign_key => :topic_id
end
class Linker < ActiveRecord::Base
#this is the join model, has extra attributes like "relevance"
belongs_to :topic
belongs_to :article
end
そこで、トピックコントローラの "new" アクションで記事をビルドすると...。
@topic.articles.build
...そして、topics/new.html.erbにネストされたフォームを作る...。
<% form_for(@topic) do |topic_form| %>
...fields...
<% topic_form.fields_for :articles do |article_form| %>
...fields...
...Railsは自動的にリンカーを作成します。 では、私の質問です。 私のリンカーモデルには、"new topic"フォームから変更できるようにしたい属性もあります。しかし、Railsが自動的に作成するリンカーは、topic_idとarticle_id以外のすべての属性にnil値を持っています。どうすれば、他のリンカー属性のフィールドを"new topic"フォームに入れ、nilにならないようにできるでしょうか?
どのように解決するのですか?
答えがわかりました。コツがあった。
@topic.linkers.build.build_article
これでリンカーが構築され、それぞれのリンカーに対応した記事が構築されます。つまり、モデルの中で
topic.rb が必要です。
accepts_nested_attributes_for :linkers
linker.rbに必要なもの
accepts_nested_attributes_for :article
では、フォームに
<%= form_for(@topic) do |topic_form| %>
...fields...
<%= topic_form.fields_for :linkers do |linker_form| %>
...linker fields...
<%= linker_form.fields_for :article do |article_form| %>
...article fields...
関連
-
[解決済み】警告:定数 ::Fixnum は非推奨 新しいモデルを生成するとき
-
[解決済み] nil:NilClass の未定義メソッド `each'... なぜでしょうか?
-
[解決済み] Ruby on rails "No route matches" (ルートに一致するものがない)。
-
[解決済み] rspec 3 - クラスメソッドをスタブ化する
-
[解決済み] Ruby on Railsのためにnetbeansを構成する方法は?
-
[解決済み] Errno::EACCESS: パーミッションが拒否された @ dir_s_mkdir
-
[解決済み] Railsです。gemを使った特定バージョンのライブラリのアンインストール
-
[解決済み] RVMでRubyのデフォルトバージョンを設定するには?
-
[解決済み] rspecにおけるassignsの意味
-
[解決済み] バリデーションなしで属性を更新する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】bcrypt LoadError: Cannot load such file
-
[解決済み】Webpacker::Manifest::MissingEntryError【クローズド
-
[解決済み] Railsでpng画像を文字列形式で表示するには?
-
[解決済み] Ruby on Railsでsimple_formを使うさまざまな方法|何が違うの?
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] RoRにおけるSpringサーバーの機能とは?
-
[解決済み] ルビーオンレール モデルから明確な値を選択する
-
[解決済み] Railsでグループとカウント
-
[解決済み] ActionController::RoutingError: 初期化されていない定数MicropostsController
-
[解決済み] Railsです。railsでhas_oneアソシエーションを使ったbuildの使い方