我对这样做的目的感到有些困惑:
module SessionsHelper
def current_user=(user)
@current_user = user
end
end
来源:http://ruby.railstutorial.org/chapters/sign-in-sign-out#code:current_user_equals
因为我们通过控制器设置了@user,它具有控制器和视图之间的范围,所以为什么我们需要明确定义它呢?
此外,解释允许:
redirect_to current_user
函数current_user如何,当我说redirect_to(函数)我在谈论@variable_path时知道什么? (在本例中为user_path)
答案 0 :(得分:0)
Rails非常聪明,知道current_user
背后有User
个对象。
也就是说,Rails可以重定向到正确的位置。
答案 1 :(得分:0)
超过90%的铁路开发人员都知道(我们可以说它现在已成为Rails Convention Over Configuration的一部分)
当您查看rails代码并找到@user时,您需要阅读@user定义的几行,以了解它的定义,以及它的用途。这与current_user不同,因为它代表登录用户。
关于你的第二个问题,
redirect_to some_object # or any function that returns some object
当您将任何对象传递给redirect_to时,会对URL进行重定向
"/#{object.class.name.tableize}/#{object.id}"
假设是一个页面,一个“显示”页面,详细说明了最终用户的对象
object_path或object_url创建相同的URL