我正在尝试使用嵌套表单来实现多步表单,但由于我使用的是嵌套表单,所以它不像 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_step
nil: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
方法。