gpt4 book ai didi

ruby-on-rails - 使用 Rails 的多步嵌套表单

转载 作者:行者123 更新时间:2023-12-04 06:07:27 25 4
gpt4 key购买 nike

我正在尝试使用嵌套表单来实现多步骤表单,但由于我使用的是嵌套表单,因此效果不如 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 %>

我得到一个“undefined method current_step for 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 添加到基础模型 Controller 中的新方法。

最佳答案

你好@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

其余的和你之前做的一样,竖起大拇指。

关于ruby-on-rails - 使用 Rails 的多步嵌套表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3324750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com