在Rails登录页面上的ruby

时间:2014-06-13 05:39:32

标签: ruby-on-rails

我尝试使用' 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'

请帮我解决此问题

2 个答案:

答案 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中的两个变量感到困惑:

  

Rails 4中创建新对象时,您需要告诉ActiveRecord您希望使用哪个参数填充新记录。目前,这是使用strong_params完成的,params基本上将params users哈希的不同成员列入白名单

底线是当您在Rails中引用数据/对象时,您必须事先将它们提供。您引用params[:key][:value]时引用的不是相关的strong_params,也不是{{1}}方法

希望这能为您提供更多想法