我尝试使用' Authlogic'创建一个简单的login_app。宝石,我收到了这个错误:
NameError in UsersController#create
undefined local variable or method `users' for #<UsersController:0x0000000354ba48>
Extracted source (around line #28):
代码:
def create
@user = User.new(params users ) # <- this line
respond_to do |format|
if @user.save
Rails.root:/home/ameex/projects/login_app
Application Trace | Framework Trace | Full Trace
app/controllers/users_controller.rb:28:in `create'
请帮我解决此问题
答案 0 :(得分:2)
如果您使用 Rails4
,这应该可以。
class UsersController < ApplicationController
def create
@user = User.new(user_params)
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
else
format.html { render action: "new" }
end
end
end
private
def user_params
params.require(:user).permit(:your_user_attr1,:your_user_attr2,..)
end
end
在这些 Guides 中查看 Strong Parameters
。
答案 1 :(得分:1)
要备份Pavan
的答案,您遇到的错误是:
UsersController#创建未定义的局部变量或方法`users&#39;对于 #
这是一个典型问题,基本上意味着您已经引用了一个不存在的本地对象(在您的情况下为users
)。问题是,现在你试图调用它,Rails找不到它,导致异常
-
<强> PARAMS 强>
正如Pavan
所指出的,您遇到的问题是您正在致电:
@user = User.create(params users)
这里的问题是你正在调用一个不存在的对象,正如所解释的那样;但更重要的是你的实际语法是错误的。您对Rails中的两个变量感到困惑:
params
哈希strong_params
方法
在Rails 4
中创建新对象时,您需要告诉ActiveRecord您希望使用哪个参数填充新记录。目前,这是使用strong_params
完成的,params
基本上将params users
哈希的不同成员列入白名单
底线是当您在Rails中引用数据/对象时,您必须事先将它们提供。您引用params[:key][:value]
时引用的不是相关的strong_params
,也不是{{1}}方法
希望这能为您提供更多想法