2013-06-18 47 views
11

私は単純なレールプロジェクトを作成しました。すべて私は新しいモデルPaintingsそのbelongs_to治療とPatientそのhas_many治療を通して絵画を追加しようとするまでうまくいった。だから何とか私が作成したネストされたフォームは表示されません、私はそれがコントローラと関係していると信じています!ありがとう、そしてドイツからの挨拶!フィールドfields_forが表示されない、入れ子になったフォーム

トリートメントコントローラ:

class TreatmentsController < ApplicationController 
    def create 
    @patient = Patient.find(params[:patient_id]) 
    @treatment = @patient.treatments.create(params[:treatment]) 
    redirect_to patient_path(@patient) 
    end 

    def destroy 
    @patient = Patient.find(params[:patient_id]) 
    @treatment = @patient.treatments.find(params[:id]) 
    @treatment.destroy 
    redirect_to patient_path(@patient) 
    end 
end 

そして、表示されませんnested fields_forによる治療のためのフォーム:

<%= form_for([@patient, @patient.treatments.build]) do |f| %> 
    <div class="field"> 
    <%= f.label :content %> 
    <%= f.text_area :content, :cols => "30", :rows => "10" %> 
    </div> 
    <div class="field"> 
    <%= f.label :category_id %> 
    <%= f.collection_select :category_id, Category.find(:all), :id, :typ %> 
    </div> 

    <%= f.fields_for :paintings do |ff| %> 
    <div class="field"> 
     <%= ff.label :name, 'Tag:' %> 
     <%= ff.text_field :name %> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.submit nil, :class => 'btn btn-small btn-primary' %> 
    </div> 
<% end %> 

UPDATE:

表示サイト:

<% @patient.treatments.each do |treatment| %> 
    <tr> 
    <td><%= treatment.category.try(:typ) %></td> 
    <td><%= treatment.content %></td> 
    <td><%= treatment.day %></td> 
    <td><div class="arrow"></div></td> 
    </tr> 
    <tr> 
+3

トライf.fields_for:

class TreatmentsController < ApplicationController def new @patient = Patient.new end end 

は、その後、溶液は、このようなpaintings「を構築」するnew方法を変更しないようになります:あなたはこのようになりますnew方法を、持っている場合:絵画、絵画。新しいこと| m |。また、モデルコードとコントローラコードを詳細に投稿できますか? –

+0

あなたの最高!私はそれを2日試してみました。私は正しい答えに設定することができますようにあなたのコメントを答えに移動してください! –

答えて

50

のものを使用して、この質問に不可欠であることさえも疑問がかなり古いですが、newが欠落している

= f.fields_for :paintings, Painting.new do |p| 
+0

もう1つ申し訳ありませんが、どうすれば画像の名前を表示できますか? –

+1

私は実際には、モデルの関係やフィールドについては考えていません。あなたはそれらを追加することはできますか? –

+0

私の更新が十分であることを願っていますか?インデックス/リストページの –

8

はコントローラ

@patient.treatments.build 

build_associationの一部をチェックアウトhttp://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to

に新しいアクションで次やってみまた、ネストされた属性についてお読みください。 を参照 http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

+0

まだ動作しません。 – fatuhoku

+1

これは誤った構文です。 '@ patient.treatments.build'を試してください – zx1986

9

を試してみてください。 destroycreateのメソッドには、この問題がありません。

class TreatmentsController < ApplicationController 
    def new 
    @patient = Patient.new 
    @patient.paintings.build 
    end 
end 
+2

これは受け入れられる回答でなければなりません。 – saadlulu

+0

はい、これらのデモコードには '.build'アクションはありません:-( https://github.com/nathanvda/cocoon_simple_form_demo/blob/master/app/controllers/projects_controller.rb#L26 – zx1986

+0

@ zx1986ビルドアクションを持たないことを意味します。ビルドアクションはオブジェクトのためのメソッドに過ぎません。 – Aleks

関連する問題