ネストされたフォームを使用して多段フォームを実装しようとしていますが、ネストされたフォームを使用しているため、Railscast のように機能しません。これは Railscast #217 (マルチステップ フォーム/ウィザード) 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 メソッドを直接使用していません。この時点までのループは次のとおりです。彼が初めてページを更新するところまでレールキャストをたどりました。
_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