5

has_many :tasks 프로젝트 모델이 있습니다. 레일 3.1에 중첩 된 리소스를 추가하고 프로젝트 편집시 작업을 추가/삭제할 수있는 nested_form 보석을 사용해보십시오.Rails 3.1에서 nested_form에서 fields_for를 렌더링하지 않습니다.

이전에 다른 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가로드되고 나는 gem "nested_form", :git => 'https://github.com/fxposter/nested_form.git'이라는 내 GEMFILE을 가리킨다. 어딘가에서 simple_form 지원을 얻기 위해 이것을 읽을 필요가있다. 나는 효과가없는 simple_nested_form_for만을 nested_form_for로 변경하려고 시도했다.

이 어떤 도움이 higly projects#new에서

+0

을'nested_form' 일반적으로'simple_form'을 지원하지 않습니다, 당신은 또한 (HTTPS [고치]에서 살펴 수 있습니다. co.kr/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

관련 문제