2016-01-18 5 views
1

Я пытаюсь создать форму с вложенными ресурсами в моем приложении 4 rails. Я использую драгоценный камень кокона. Каждый шаг будет иметь подшаги, и я бы хотел, чтобы пользователь добавил столько подэтапов в форму и хотел бы.Rails кокон вложенная форма: неопределенный метод `reflection_on_association 'для NilClass: Class

Step.rb

class Step < ActiveRecord::Base 
    has_many :substeps 
    accepts_nested_attributes_for :substeps 

Substep.rb

class Substep < ActiveRecord::Base 
    belongs_to :step 

код формы

<%= form_for :step, :url => steps_path do |f| %> 
    <%= text_field(:step, :title, :value => '', class: 'fly-input input_info', placeholder: 'Process Title', id: 'step_form_title') %> 
    <%= text_field(:step, :description, :value => '', class: 'fly-input input_info', placeholder: 'Process Description', id: 'step_form_description') %> 
    <%= hidden_field :step, :known %> 
    <%= hidden_field_tag :experiment, @experiment.id %> 
    <%= f.fields_for :substep do |ff| %> 
    <%= ff.text_field :description %> 
    <% end %> 
    <%= link_to_add_association 'Add substep', f, :substeps %> 
    <%= f.submit "Done", class: "main_button" %> 
<% end %> 

Когда я делаю это, я получаю сообщение об ошибке чтения: «неопределенный метод` reflect_on_association 'для NilClass: Class "в этой строке

<%= link_to_add_association 'Add substep', f, :substeps %> 

Любые мысли о моей проблеме?

EDIT Измененное text_field на ff.text_field основе по предложению Паван в

+0

К какой строке указывает ошибка? – Pavan

+0

Ошибка указана в '<% = link_to_add_association' Добавить substep ', f,: substeps%>' line –

+0

Можете ли вы включить код для 'link_to_add_association'? –

ответ

2

кокон ожидает, что вы предоставляете объект формы в качестве второго параметра, как вы, но и ожидает, что этот второй параметр будет иметь на самом деле Экземпляр экземпляра Rails как атрибут f.object.

Ваша форма создается только с именем модели form_for :step, поэтому Cocoon вызывает исключение.

Для решения этой проблемы вы должны изменить его на form_for @step, где @step может быть Step.new или любым другим экземпляром Step.

+0

Это сработало, спасибо! –

+0

По какой-то причине мои параметры подстановки не передаются моему контроллеру, но это отдельная проблема, я полагаю. –

+0

@Ron Вам нужно изменить '<% = ff.text_field: substep,: description%>' to '<% = ff.text_field: description%>', чтобы он правильно передавался контроллеру. – Pavan

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