3

我正在尝试使用嵌套表单来实现多步表单,但由于我使用的是嵌套表单,所以它不像 railscast 那样工作。我从 railscast #217 (multistep form/wizards) http://railscasts.com/episodes/217-multistep-forms得到这个

旧的 _event.html.erb 表单

<%= render "event_details", :f => f %>

<%= render "sandwich_details", :f => f %>

_event.html.erb 的新版本

<%= render "#{@event.current_step}_details", :f => f %>

我收到“ current_stepnil:NilClass 的未定义方法”错误。我认为这是因为event嵌套在里面user,所以我没有像 railscast 那样直接使用 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 %>

事件.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?

编辑

事实证明我必须传入@event => :event本地,然后添加@event = Event.new到控制器中的基本模型new方法。

4

1 回答 1

0

嗨@reti notinh 你的方法不对,但你需要的只是一点点

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

休息和你之前做的一样,竖起大拇指。

于 2012-04-10T11:30:30.550 回答