【问题标题】:Multistep Nested Forms Using Rails使用 Rails 的多步嵌套表单
【发布时间】: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 =&gt; :event 传递给本地变量,然后将@event = Event.new 添加到控制器中的基本模型new 方法中。

【问题讨论】:

    标签: ruby-on-rails wizard nested-forms multi-step


    【解决方案1】:

    嗨@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
    

    休息和你之前做的一样,赞一个。

    【讨论】:

      猜你喜欢
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多