【问题标题】:Rails Sessions Controller Syntax errorRails 会话控制器语法错误
【发布时间】:2013-11-18 15:46:50
【问题描述】:

我正在尝试使用 ruby​​ on rails 设置登录/会话,但是当我尝试呈现登录页面时出现此错误:

/Users/farhadam/mboddy/app/controllers/sessions_controller.rb:10: 语法错误,意外 tLBRACK,需要关键字_do 或 '{' 或 '(' 参数 [:session][:password] ^ /Users/farhadam /mboddy/app/controllers/sessions_controller.rb:11:语法错误,意外')',期待keyword_end

这是我的会话控制器:

class SessionsController < ApplicationController

def new
end

def create
user = User.validate_login (

    params [:session][:email],
    params [:session][:password]
    )

if User
    sessions[:user_id] = user.id
    redirect_to login_path
else
    flash[:status] = FALSE
    flash[:alert] = 'Invalid username and password!'

    redirect_to login_path
end
end

def destroy

session[:user_id] = nil
redirect_to login_path
end

end

【问题讨论】:

  • 到目前为止有什么运气吗?

标签: ruby-on-rails ruby session login


【解决方案1】:

尝试在一行中传递 User.validate_login 的参数:

user = User.validate_login(params[:session][:email], params[:session][:password])

此外,在以下行 (if User) 中,您可能正在测试用户对象是否已成功通过身份验证。如果是这样,您需要将其更改为以下内容:

if user

评估User——类——不同于评估user实例User 将始终评估为 true(因为 User 永远不会是 nil),因此您要评估 User.validate_login 是否成功地将用户分配给 user 局部变量。

【讨论】:

  • 将它放在一行中也不起作用:(我仍然遇到同样的错误。不知道为什么会发生这种情况,但我正在遵循此视频youtube.com/watch?v=h0k6DFIStFY 中的所有说明,但无法通过此错误!
  • 哦,你对 if User vs. if user 的看法是完全正确的……只是改变了它。谢谢你:)
  • 您是否删除了params 和括号中的符号之间的空格?我已经更新了我的答案以反映。试试params[:session][:email], params[:session][:password],间距精确
猜你喜欢
  • 1970-01-01
  • 2011-12-12
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-25
  • 1970-01-01
相关资源
最近更新 更多