3

ネストされたフォームを使用して多段フォームを実装しようとしていますが、ネストされたフォームを使用しているため、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.newnew

4

1 に答える 1

0

こんにちは@retiあなたの方法が間違っているわけではありませんが、必要なのはほんの少しの変更です

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 に答える