2013-04-02 2 views
0

Я пытаюсь добавить некоторые поля в свою вложенную форму. Я включил драгоценный камень nested_forms (https://github.com/ryanb/nested_form).rails nested_forms ошибка и логика

Для моих готовых карт он отлично работает, но я не могу добавить новые поля.

Мой контроллер:

def new 
    @people = Person.all 
    @vehicles = Vehicle.all 
    @roles = Role.all 
    @pratice_people = [] 
    @people.each do |a| 
    if a.at1 == true 
     @pratice_people << a 
    end 
    end 
    @practice = Practice.new 
    @pratice_people.count.times { @practice.uebung_maps.build } 
    render action: "new" 
end 

и моя форма:

<% @runs = 0 %> 
<%= f.fields_for :uebung_maps do |map| %> 
    <tr> 
    <%= map.hidden_field :role_id, :id => "role_id_#{@runs}" %> 
    <%= map.hidden_field :vehicle_id, :id => "vehicle_id_#{@runs}" %> 
    <%= map.hidden_field :person_id , :value => @pratice_people[@runs].id %><br/> 
    <td><%= @pratice_people[@runs].name %></td> 
    <td><%= map.select :role_id, options_from_collection_for_select(@roles, :id, :name), :include_blank => true %></td> 
    <td><%= map.select :vehicle_id, options_from_collection_for_select(@vehicles, :id, :name), :include_blank => true %></td> 
    <td><%= map.text_field :time %></td> 
    </tr> 
    <% @runs += 1 %> 
<% end %> 

<%= f.link_to_add "+" , :uebung_maps %> 

Если я пытаюсь получить доступ к странице, я получаю следующий отчет об ошибке

Called id for nil, which would mistakenly be 4 -- if you really wanted the id of nil, use object_id 

ли я (или как) создать логику для повторного запуска Practice.uebung_maps.build?, потому что я думал, что это делается в пределах nested_forms gem ....

+1

'@pratice_people [@runs]' является 'nil' –

+0

ах ладно .. я постараюсь это :) – HappyHacking

+0

хорошо я» Теперь измените форму, задав вопрос: @pratice_people [@runs] .nil? и форма работает сейчас, но если я нажимаю на ссылку, ничего не происходит ... мне нужно добавить еще одну логику здесь? – HappyHacking

ответ

1

Сначала убедитесь, что модели созданы правильно.

class Practice < ActiveRecord::Base 
    has_many :uebung_maps 
    accepts_nested_attributes_for :uebung_maps 
end 

class UebungMap < ActiveRecord::Base 

end 

Во-вторых, убедитесь, что form_for вложен правильно

<%= nested_form_for @practice do |f| %> 
    <%= f.fields_for :uebung_maps do |uebung_maps_form| %> 
    <%= uebung_maps_form.text_field :time %> 
    <% end %> 
    <p><%= f.link_to_add "+", :uebung_maps %></p> 
<% end %> 
+0

это то, что у меня есть! Нужно ли мне написать собственный метод ajax для создания нового? – HappyHacking

+0

Потому что, если я часы на нем, ничего не происходит. В консоли firbug нет никаких ошибок ... – HappyHacking

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