我在尝试通过模态窗口从我的主页提交注册表单时收到错误“param not found:user”。
ActionController::ParameterMissing in UsersController#create
param not found: user
def user_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
这是传入的参数。
Parameters:
{"utf8"=>"✓",
"authenticity_token"=>"eXXn7+Rsf4SLciRPn4RW8Lw+3u6/FJZi8IW2XxekYsU=",
"email"=>"asdf@asdf.com",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"commit"=>"Sign up"}
这是users_controller.rb
class UsersController < ApplicationController
def new
user = User.new
end
def create
user = User.new(user_params)
if user.save
auto_login(user)
redirect_to root_path
else
render :new
end
end
private
def user_params
params.require(:user).permit(:email, :password, :password_confirmation)
end
end
一切看起来都不错,但显然有些不对劲。有人有主意吗?谢谢!
答案 0 :(得分:1)
你需要将你的参数嵌套看起来像这样:
{
"user" =>
{
"email" => ...
}
}
使用form_for
可以更轻松地执行此操作,但您可以使用form_tag
命名输入来执行相同操作:
<input name="user[email]">
<input name="user[password]">
在erb中你可以使用:
<%= text_field_tag 'user[email]' %>