2016-08-15 8 views
0

私は編集画面に使用するフォームを持っていますが、別の画面でもモーダル(ユーザーがサインアップしたばかり)ただし、そのモーダルにのみネストされたフォームの表示に小さなエラーがあります。私は何時間もそれを見つけようとしています。ここに私のコードは次のとおりRails 4ネストされたフォームが編集中に表示されますが、モーダルでは表示されません。

= form_for @user do |user| 

.FORM基 %ラベル{:FIRST_NAME:=>用} ファーストネーム= user.text_field:FIRST_NAME、クラス "フォームコントロール"

%label{:for => :middle_name} 
    Middle Name 
= user.text_field :middle_name, class: "form-control" 

%label{:for => :last_name} 
    Last Name 
= user.text_field :last_name, class: "form-control" 

%label{:for => :image} 
    Profile Picture 
= image_tag @user.image.url(:thumb), class: "img-circle" if @user.image.exists? 
= user.file_field :image, class: "form-control" 

%label{:for => :headline} 
    Headline 
= user.text_field :headline, class: "form-control" 

%label{:for => :bio} 
    What are you currently Involved with? (Hint Just copy your LinkedIn Highlight) 
= user.text_area :bio, class: "form-control user_text_area" 

%label{:for => :twitter} 
    Your Twitter Handle 
= user.text_field :twitter, class: "form-control" 


%label{:for => :school} 
    School 
= collection_select(:user, :school_id, School.all, :id, :name, {prompt: true, :required => ""}, { class: "filter-option pull-left form-control" }) 

%br/ 

%label{:for => :course} 
Course 
= user.fields_for :course_user do |cu| 
    = cu.select :course_id, Course.all.map { |c| [c.name_with_intake, c.id] }, {}, class: 'filter-option pull-left form-control', id: 'courses_select' 
-# = collection_select(:course, :course_id, Course.all, :id, :name, {:prompt => "Select a Course"}, {:id => 'courses_select', class: "filter-option pull-left form-control"}) 

has_one :course_user 
accepts_nested_attributes_for :course_user 

私がで立ち往生していますフィールドは、ユーザーにコースを追加するには、「コースの場」である:

その後、私のユーザーモーダルは、このことを示しています。

%label{:for => :course} 
Course 
= fields_for :course_user do |cu| 
    = cu.select :course_id, Course.all.map { |c| [c.name_with_intake, c.id] }, 

または変更:フィールドにCourseUser.new

%label{:for => :course} 
Course 
= fields_for CourseUser.new do |cu| 
    = cu.select :course_id, Course.all.map { |c| [c.name_with_intake, c.id] }, 

に両方の結果をcourse_userを今、ここで他のものは、ユーザーの一部を除去することが示唆されているので、コードは次のようになり、事ありますモーダルで表示されます。ただし、両方ともデータが保存されないようにします。だから私は疑問に思います...何がうまくいかないのですか?私はこれに助けてくれてありがとう!

答えて

0

長い夜、このことを理解し、最終的にヘルプラインを呼び出すと、問題の原因がわかりました。 User Controller#editには、私が完全に見落としたラインがありました。だからあなたはuser.fields_forを持っている必要があります。必要であれば、私も同様の問題であなたを助けることができます。

= user.fields_for :course_user do |cu| 

これは最後に機能したコードです。私は取るべきいくつかのステップを持っています:

1 - Paramsが解析されているものを見てください。 params

2を確認してください - 再びサーバーのログに、プッシュされますどのような項目を参照

3 - そして、あなたはそれぞれのモデルに

accepts_nested_attributes_for :course_user 

を追加した場合の動作はコントローラであり、何をチェック(変更:course_user)

関連する問題