log_in(用户) 与 log_in 用户相同吗?
is log_in(user) the same as log_in user?
正在学习 Hartl 的 Rails 教程,chapter 8.2.1。
我们定义:
def log_in(user)
session[:user_id] = user_id
end
然后我们在控制器中调用log_in
方法:
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in user
redirect_to user
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end
为什么我们在控制器中写log_in user
而不是log_in(user)
?它们是等效的语法吗?谢谢
是的。
作为 ruby 语法糖的一部分,您可以在方法调用时去掉括号
例如,假设您有一个接受散列的方法
您可以通过以下任一方式调用它:
method_name({param1: 1, param2: 2})
method_name(param1: 1, param2: 2)
method_name param1: 1, param2: 2
什么时候用哪个?视情况而定。
如果你想嵌套方法调用,最好是冗长的。如果您需要传递多个哈希值,则需要使用 {}
括号告诉 ruby 它们的边界。
正在学习 Hartl 的 Rails 教程,chapter 8.2.1。
我们定义:
def log_in(user)
session[:user_id] = user_id
end
然后我们在控制器中调用log_in
方法:
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in user
redirect_to user
else
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
end
为什么我们在控制器中写log_in user
而不是log_in(user)
?它们是等效的语法吗?谢谢
是的。
作为 ruby 语法糖的一部分,您可以在方法调用时去掉括号
例如,假设您有一个接受散列的方法
您可以通过以下任一方式调用它:
method_name({param1: 1, param2: 2})
method_name(param1: 1, param2: 2)
method_name param1: 1, param2: 2
什么时候用哪个?视情况而定。
如果你想嵌套方法调用,最好是冗长的。如果您需要传递多个哈希值,则需要使用 {}
括号告诉 ruby 它们的边界。