【发布时间】:2019-12-10 14:35:53
【问题描述】:
我使用 Wicked gem 创建了一个多步骤表单。第一步是使用电子邮件名称和密码注册,第二步是现在只包含街道的地址。这是我的地址.html.erb
<%= form_for @user, url: wizard_path do |f| %>
<div class="field">
<%= f.label :street %>
<%= f.text_area :street %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我在 UsersController 中允许街道和其他参数:
class UsersController < ApplicationController
def index
@users = User.all
end
def new
@user = User.new
end
def create
@user = User.new(params[:user])
if @user.save
session[:user_id] = @user.id
redirect_to user_steps_path
else
render :new
end
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation, :remember_me, :first_name, :last_name, :street, :house_number, :city, :zip_code)
end
end
我收到了标题中提到的错误。这些是参数。它基本上得到了街道,但是somhow将id分配给地址?
{"utf8"=>"✓",
"_method"=>"patch",
"authenticity_token"=>"ZOkBaqFUdFj47iI8vB0D4PI26ZsgEKasqbzvVM2ry4Z3e+AsYMh0yRSuUoZF5zbJ3SzAkPShI0sjaZOgh0yXRw==",
"user"=>{"street"=>"jef b"},
"commit"=>"Update User",
"id"=>"address"}
发生了什么以及如何纠正它?这是 UserSteprController:
class UserStepsController < ApplicationController
include Wicked::Wizard
steps :address
def show
@user = current_user
render_wizard
end
def update
@user = current_user
@user.attributes = params[:user]
render_wizard @user
end
private
def redirect_to_finish_wizard
new_user_profile_path(current_user.id)
end
end
更新操作中的第二行错误:@user.attributes = params[:user] 谢谢!
【问题讨论】:
标签: ruby-on-rails