Я пытаюсь реализовать многошаговую форму, используя вложенную форму, но, поскольку я использую вложенную форму, она не работает как Railscast.Я получил это из railscast # 217 (многошаговая форма / мастера) http://railscasts.com/episodes/217-multistep-forms
old _event.html.erb form
<%= render "event_details", :f => f %>
<%= render "sandwich_details", :f => f %>
новая версия _event.html.erb
<%= render "#{@event.current_step}_details", :f => f %>
Я получаю ошибку "неопределенный метод current_step
для nil: NilClass".Я думаю, это потому, что event
вложен в user
, поэтому я не использую метод forms_for, как в railscast.Вот цикл, ведущий к этой точке.Я проследовал за рельсом до того момента, когда он впервые обновил страницу.
_forms.html.erb
<% form_for @user do |f| %>
.
.
.
<% f.fields_for :events do |event_form| %>
<%= render :partial => 'event', :locals => {:f => event_form } %>
<% end %>
<% end %>
event.rb
class Event < ActiveRecord::Base
belongs_to :user
attr_writer :current_step
def current_step
@current_step || steps.first
end
def steps
%w[event_details item_details]
end
Как я могу изменить "#{@event.current_step}_details"
, чтобы он нашел current_step?
EDIT
Оказывается, мне пришлось передать @event => :event
в местные жители, а затем добавить @event = Event.new
к базовой моделиnew
метод в контроллере.