fields_for не рендеринг - рельсы 3 - PullRequest
26 голосов
/ 11 декабря 2010

Наконец перешел на Rails 3 для нового проекта и уже столкнулся с проблемой новичка.

Попытка создать простую вложенную форму.

2 модели: список и задачи

Модель списка

class List < ActiveRecord::Base
  has_many :tasks, :dependent=>:destroy
  accepts_nested_attributes_for :tasks, :reject_if => lambda { |a| a[:name].blank? }
end

Модель задачи

class Task < ActiveRecord::Base
  belongs_to :list

end

Список контроллера

def new
   @list = List.new
   3.times{ @list.tasks.build }
end

lists / new.html.erb

<% form_for :list, :url=>{:action=>"create"} do |f| %>
    <%= f.text_field :name, :class=>'big' %>
    <%= f.label :name, "ex: Today's Todos, Christmas List" %>

    <% f.fields_for :tasks do |builder| %>
        <p>
            <%= builder.label :name, "Task" %>
            <%= builder.text_field :name %>
            <%= builder.check_box :_destroy %>
        </p>
    <% end %>

    <p><%= submit_tag "Create List", :id => "submit", :name => "submit", :class => "form_submit", :disabled => false, :disable_with => "Please wait..." %></p>

<% end -%>

Использование debug @ list Я вижу 3 задачи, созданные в моем контроллере, но это fields_forне будет отображаться.

Есть идеи?

Ответы [ 2 ]

81 голосов
/ 11 декабря 2010

В рельсах 3 вы должны использовать <%= вместо <% для form_for и fields_for.Посмотрите, поможет ли это.

0 голосов
/ 12 июня 2013

В вашем списке контроллера в действии новый вы должны добавить

 def new
   @list = List.new
   3.times{ 
   @tasks = @list.tasks.build
   }
end
...