2017-10-23 14 views
0

私は、statementidentityでうまく動作するチェックボックスを使ってhas_manyアソシエーションを持っています。has_many_throughアソシエーション複数のアソシエーションを追加する

私が直面している問題は、PhaseテーブルとIdentityテーブルをどのように関連づけても、それを依然としてステートメントフォームにリンクすることです。したがって、それぞれstatementには多くのidentitiesがあり、それらのそれぞれに対してidentitiesはラジオボタンタグを使用してphaseを関連付けたいと思っています。その後、私の形で

class Indicator < ApplicationRecord 
    belongs_to :statement, required: false 
    belongs_to :identity, required: false 
    belongs_to :phase, required: false 
end 

class Statement < ApplicationRecord 
    belongs_to :student, required: false 
    has_many :indicators 
    has_many :identities, :through => :indicators 
    accepts_nested_attributes_for :identities 
end 

class Identity < ApplicationRecord 
    has_many :indicators 
    has_many :statements, :through => :indicators 
    accepts_nested_attributes_for :statements 
    has_many :phases, :through => :indicators 
    accepts_nested_attributes_for :phases 
end 

class Phase < ApplicationRecord 
    has_many :indicators 
    has_many :identities, :through => :indicators 
    accepts_nested_attributes_for :identities 
end 

私が理解から
<%= form_with(model: statement, local: true) do |form| %> 
<table class="table table-bordered"> 
    <% hidden_field_tag "statement[identity_ids][]", nil %> 
    <% Identity.all.each do |b| %> 
    <tr> 
    <td><%= check_box_tag "statement[identity_ids][]", b.id, @statement.identity_ids.include?(b.id) %></td> 
    <td><%= b.description %></td> 
    <td>CODE FOR PHASES</td> 
    </tr> 
    <% end %> 
</table> 

<div class="actions"> 
    <%= form.submit %> 
</div> 
<% end %> 
+0

何がうまくいかないのですか?エラーメッセージや、何が動作していないかについての詳細情報がありますか? –

+0

エラーメッセージは表示されず、データベースに保存されません。 – DollarChills

+0

エラーメッセージが表示されます。あなたはそれを表示していないので、ブレークポイントを設定し、 '@ yourobject.errors.full_messages'を実行して' rails console'にエラーメッセージを表示してください。 –

答えて

0

has_many :phases, :through => :indicatorsのための要件はありません。 has_many :phasesはうまく動作するはずです。私たちはこの方法collection_radio_buttonsmethod collection_check_boxes

を持っている場合にも、その理由をループとは、私はuyouはアイデンティティの位相を表示したい場合は、あなたがb.phases.all.each代わりの<% Phase.all.each do |b| %>

を使用する必要があります。また、チェックボックスやラジオボタンを表示しますまだこれを実装していて、よりクリーンなコードだけを探しているのかどうかはわかりません。実際にレコードを保存する際に問題が発生している場合は、エラーを分かち合い、よりよく理解してください。

問題があればコメントしてください。お手伝いします。

+0

この@Aankankshaであなたの助けを感謝します。うまくいけば私が達成しようとしていることのより良い理解を助けるために私の質問を更新しました。 – DollarChills

関連する問題