2012-04-10 3 views
2

Я следовали учебнику Райан Бейтс на вложенной форме Railscast 196Создания форм для нескольких вложенных ресурсов в Rails 3

Формы для нового действия показывает вложенные атрибуты для викторин, но не показывает вложенные атрибуты для ключа. Я предполагаю, что это связано с тем, что викторины имеют отношения has_many, где ключ имеет отношения has_one ... Но я не могу понять, что я делаю неправильно?

Любая помощь очень ценится!

Это моя модель:

class Repository < ActiveRecord::Base 
    has_many :quizzes, :dependent => :destroy 
    has_one :key, :dependent => :destroy 

    accepts_nested_attributes_for :key, :quizzes 
end 

Это мой контроллер:

def new 
    @repository = Repository.new 
    3.times { @repository.quizzes.build } 
    @repository.key = Key.new 

    respond_to do |format| 
    format.html # new.html.erb 
    format.xml { render :xml => @repository } 
    end 
end 

Это мое мнение:

<div class="field"> 
    <%= f.label :wp_uid %><br /> 
    <%= f.text_field :wp_uid %> 
<% f.fields_for :quizzes do |quiz_fields| %> 
    <p> 
    <%= quiz_fields.label :name, "Name" %><br /> 
    <%= quiz_fields.text_field :name %> 
    </p> 
<% end %> 
<% f.fields_for :key do |key_fields| %> 
    <div class="field"> 
    <%= key_fields.label :value, "Value" %><br /> 
    <%= key_fields.text_field :value %> 
    </div> 
    <div class="field"> 
    <%= key_fields.label :expiry, "Expiry" %><br /> 
    <%= key_fields.date_select :expiry %> 
    </div> 
<% end %> 
</div> 
<div class="actions"> 
    <%= f.submit %> 
</div> 
<% end %> 

ответ

1

Вы должны попытаться модифицировать ваши fields_for блоки использовать < % =%>

Попробуйте изменить на:

<%= f.fields_for :key do |key_fields| %> 

railscast могли быть сделаны до изменения в Rails 3 использовать <% =%> вместо < %%>.

У Ryan есть камень nested_form, который может оказаться полезным для этого. Я еще не пробовал использовать его, но планирую в следующий раз начать новый проект.

https://github.com/ryanb/nested_form

+0

Работал! Благодаря! – tylermauthe

0

Попробуйте строить ключевой объект как

@ reposity.build_key

С рельсов docmentation http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#label-Unsaved+objects+and+associations

Если вы хотите назначить объект к HAS_ONE ассоциации без сохранения он использует метод build_association. Заменяемый объект будет сохранен для обновления внешнего ключа.

+0

Я тоже это сделал, но это не исправить мою проблему. Спасибо хоть :) – tylermauthe

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