我正在尝试让 Wicked Wizard gem 在我的 Rails 应用程序上运行。一旦用户注册了应用程序(使用 Devise),他们就会被重定向到这个表单:
收入.html.erb
<%= form_for @finance, url: wizard_path, :method => :put do |f| %>
<div class="field">
What <strong>year</strong> were you born?<br>
<%= f.number_field :age %>
</div>
<div class="field">
What's your <strong>zip code</strong>?<br>
<%= f.number_field :zip %>
</div>
<%= f.submit %>
<% end %>
我生成了一个名为finances_welcome_controller.rb
处理的控制器wizard_path
:
class FinancesWelcomeController < ApplicationController
before_filter :authenticate_user!
include Wicked::Wizard
steps :income, :expenses
def show
@finance = Finance.find_all_by_user_id current_user[:id] || @finance = current_user.finances.build(finance_params)
render_wizard
end
def update
@finance = Finance.find_all_by_user_id current_user[:id]
@finance.update(params[:finance])
render_wizard @finance
end
当我单击submit
按钮时,我收到此错误:
NoMethodError in FinancesWelcomeController#update
undefined method `update' for #<Array:0x00000104c6ff48>
Extracted source (around line #14):
def update
@finance = Finance.find_all_by_user_id current_user[:id]
**@finance.update(params[:finance])**
render_wizard @finance
end
不知道为什么没有定义更新方法,因为这与我的资源模型使用的语法相同。Wicked Wizard gem 已在此应用程序上成功实现。