5

私はhas_many :tasksというプロジェクトモデルを持っています。レール3.1にネストされたリソースを追加し、プロジェクトを編集するときにタスクを追加/削除できるように、今度はnested_form gemで試してみてください。Rails 3.1はfields_forをnested_formからレンダリングしません

以前は他のRails3アプリケーションでnested_formを使用していましたが、うまくいきましたが、今度はfields_for部分は何も描画しません。

#project.rb 
class Project < ActiveRecord::Base 

    attr_accessible :nr, :name, :client_id, :project_status_id, :hidden, :active, :description, :tasks_attributes 


    has_many :tasks, :dependent => :destroy 
    accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? }, :allow_destroy => true 


end 


#task.rb 
class Task < ActiveRecord::Base 

    belongs_to :project 

end 

#views/projects/_form.html.erb 
<%= simple_nested_form_for @project do |form| %> 

    <%= form.input :nr, :label => 'Nr' %> 
    <%= form.input :name, :label => 'Name' %> 
    <%= form.association :client, :collection => Client.all(:order => 'name'), :prompt => "Choose a Client" %> 
    <%= form.input :description, :label => 'Description' %> 
    <%= form.input :active, :label => 'Active' %> 
    <%= form.input :hidden, :label => 'Hidden' %> 
    <div class="task_fields"> 
    <%= form.fields_for :tasks do |task_form| %> 
     <%= task_form.input :name %> 
     <%= task_form.input :description %> 
     <%= task_form.input :deadline %> 
     <%= task_form.link_to_remove "Remove this task" %> 
     <p><%= form.link_to_add "Add a task", :tasks %></p> 
    <% end %> 
    </div> 
    <div class="actions"> 
    <%= form.button :submit %> 
    </div> 
<% end %> 

、私のルートで

は、ここに私のコードです

resources :posts do 
    resources :comments 
    end 

が、私は私のブラウザでページを訪問したときに

<div class="task_fields"></div> 

は空にレンダリングされます。 fields_forおよびそれ以外のものはありません。 nested_form.jsがロードされ、私は自分のGEMFILE内でgem "nested_form", :git => 'https://github.com/fxposter/nested_form.git'を指しています。私はsimple_formサポートを得るためにこれを行う必要があると思います。また、simple_nested_form_forをnested_form_forに変更するだけで効果はありませんでした。

すべてのヘルプはhigly projects#new

+0

をnested_form'は通常 'simple_form'をサポートしていません'ので、あなたはまた、[繭](HTTPSを見てみることができます。 com/nathanvda/cocoon)は、私が作成した宝石であり、それはフォームビルダーにとらわれないものです。 – nathanvda

答えて

15

を高く評価し、あなたはそれ以外の場合は、あなたのfields_for部分は何も表示されません少なくとも一つのタスクを初期化する必要があります。

# projects_controller.rb 
def new 
    @project = Project.new 
    @project.tasks.new 
end 

あなたが複数のタスクたい場合:// githubの:

n.times { @project.tasks.new } # replace n with the number of tasks needed 
+0

hehe、それは速かった!ありがとうございました.. – tmaximini

+0

それは命の恩人でした:D – AnkitG

+1

+1これはなぜ起こるのか説明していますか?それがまったく表示されないことが奇妙に思えます... – corbin

関連する問題