【发布时间】:2010-07-24 10:38:20
【问题描述】:
我正在尝试使用嵌套表单来实现多步表单,但由于我使用的是嵌套表单,所以它不像 railscast 那样工作。我从 railscast #217 (multistep form/wizards) @987654321@
旧的_event.html.erb表格
<%= render "event_details", :f => f %>
<%= render "sandwich_details", :f => f %>
新版_event.html.erb
<%= render "#{@event.current_step}_details", :f => f %>
我收到“用于 nil:NilClass 的未定义方法 current_step”错误。
我想这是因为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 %>
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?
编辑
事实证明,我必须将@event => :event 传递给本地变量,然后将@event = Event.new 添加到控制器中的基本模型new 方法中。
【问题讨论】:
标签: ruby-on-rails wizard nested-forms multi-step