我有一个简单的问题: Rails中 routes.rb 中的变量范围是多少? 更具体 : 我可以在这个特定的文件中引用 ApplicationController 的变量吗?就像在观点中一样?
我问,因为我不能让这个lambda工作:
root to: "users#edit", constraints: lambda { |req| !@current_user.nil? }, as: :authenticated_root
@current_user在application_controller.rb中包含的模块中声明,但在 routes.rb中不可见
据推测,我在手册中忽略了一些重要的页面......
答案 0 :(得分:2)
不,路径约束无法访问控制器中设置的变量。
你真的应该在before_action
(> = Rails 4)或before_filter
(< = Rails 3.2)中将你的逻辑移动到控制器。