我有一个处理两个域的Rails应用程序。该应用的设置与this blogpost中所述的相同。根据访问的基本网址,routes.rb
确定应触发哪个控制器和哪个操作。
这两个域共享很多文件,例如layouts/application.html.haml
,layouts/footer.html.haml
等。但在layouts/application.html.haml
我需要引用不同的导航文件。通常我会写:
= render "layouts/navigation"
但是我想写多个域名,如下所示:
= render "layouts/#{domain_constraint}/navigation"
... domain_constraint
此处取决于路由中匹配的域约束。
那么如何从路由传递此约束,以便稍后我可以使用helpers/application_helper.rb
方法和controllers/application_controller.rb
方法访问此约束?
答案 0 :(得分:0)
在您引用的博客文章中......您的控制器和视图中应该可以使用request.domain
。这意味着您应该能够键入request.domain
请求标头的值来呈现布局。
= render "layouts/#{request.domain}/navigation"
然后,我建议在ApplicationController中创建辅助方法,并将它们标记为helper_method。
ApplicationController < ActionController::Base
helper_method :my_method
def my_method
# ... do whatever and access `request.domain` again if you want
end
end
以这种方式标记为辅助方法的方法将同样适用于控制器和视图。