Многошаговые вложенные формы с использованием Rails - PullRequest
3 голосов
/ 24 июля 2010

Я пытаюсь реализовать многошаговую форму, используя вложенную форму, но, поскольку я использую вложенную форму, она не работает как 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 метод в контроллере.

1 Ответ

0 голосов
/ 10 апреля 2012

Привет @ reti notinh не так с вашим методом, но вам нужно всего лишь немного chage

class Event < ActiveRecord::Base
  belongs_to :user
  attr_writer :current_step

  def current_step
    @current_step || steps.first
  end

  def steps
    %w[event item]
  end

И отдых такой же, как вы делали ранее, thums up.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...