2013-03-05 4 views
0

Я пытаюсь получить форму проекта, чтобы построить первое (начальное) время нескольких (до 12) блоков времени добровольца.Вложенные поля не создаются в форме

project.rb

class Project < ActiveRecord::Base 
    attr_accessible :title, ... 
    has_many :vol_times, :dependent => destroy 
    accepts_nested_attributes_for :vol_times, :reject_if => lambda { |a| a[:start_time].blank? }, :allow_destroy => true 
    ... 
end 

vol_time.rb

class Vol_time < ActiveRecord::Base 
    attr_accessible :start_time, ... 
    belongs_to :project 
end 

ProjectsController

class ProjectsController < ApplicationController 

    before_filter :signed_in_user, only: :create 
    ... 
    def new 
    @project = Project.new 
    @user = current_user 
    @project.vol_times.build 
    end 
    ... 
end 

Vol_Times Controller

class Vol_TimesController < ApplicationController 
    def new 
    @reward = Reward.new 
    end 
    ... 
end 

мой взгляд выглядит так ...

<%= form_for(@project) do |f| %> 

<div class="form_field_block"> 
     <p class="form_label">&nbsp;&nbsp;Project Title</p> 
    <%= f.text_field :title, :size => 40, :placeholder => " Project Title...", :class => "frm" %> 
</div> 
<div class="form_field_block"> 
    <p class="form_label">&nbsp;&nbsp;Project Sub-title</p> 
    <%= f.text_field :sub_title, :size => 40, :placeholder => " Project Sub-title...", :class => "frm" %> 
</div> 
<p class="clearing"></p> 
<div class="form_field_block"> 
    <% f.fields_for :vol_times do |builder| %> 
    <%= render :partial => 'start_time', :f => builder %> 
     <% end %> 
</div>  
<p class="clearing"></p> 
<%= button_tag "btn_start_project.png", :class => "btn_save" %> 
<% end %> 

И _partial выглядит так ...

<%= f.label :start_time, "Starting Time" %> 
<%= f.text_field :start_time %> 

При просмотре страницы, я вижу, содержащий <div>, но не содержимое ERB, которое должно быть проанализировано из _partial.

Любые идеи, почему это не работает? Я получил общий контекст от Rails Bates 'RailsCast # 196 - Here

ответ

1

у вас отсутствует = на fields_for. Он должен быть

<%= f.fields_for :vol_times do |builder| %> 
+0

Спасибо, что исправили проблему поколения, но теперь я получаю 'NameError в проектах # новый неопределенными локальная переменная или метод«F»для # <# ' ' <% = f.text_field: vol_times,: size => 20,: placeholder => «Время начала ...»,: class => «frm»%> ' – Matteo

+0

Хорошо, для тех, кто может последовать, ошибка в комментариях выше связана с включением': partial => 'в визуализации. Он должен читать: '<% = render 'start_time',: f => builder%>' – Matteo

+0

Исходный синтаксис для частичного отображения: '<% = render: partial => 'start_time',: locals => { : f => builder}%> '. То, что вы сделали, является ярлыком и является предпочтительным, потому что оно чище. Если вам нужно передать другие параметры, такие как 'collection' и' as', вам все равно придется использовать оригинальный синтаксис. – jvnill

Смежные вопросы