Aar*_*ron 16 subdomain routing routes ruby-on-rails rails-engines
我们当前的Rails应用程序是由作为引擎安装的子应用程序构成的.通常,这些引擎安装在主routes.rb文件的子域中,如下所示
mount MySubApp::Engine => '/', as: :sub_app, constraints: {subdomain: 'sub_app'}
Run Code Online (Sandbox Code Playgroud)
内路线MySubApp的routes.rb文件,不使用时命名拿到子域_url的帮手.例如以下内容apps/my_sub_app/config/routes.rb
MySubApp::Engine.routes.draw do
resources :foos
end
Run Code Online (Sandbox Code Playgroud)
给我们,sub_app.foo_url(5)但结果
http:// www .example.com/foos/5
什么时候我们想要
http:// sub_app .example.com/foos/5
如何将引擎的安装约束传递到其命名路径?
虽然我仍然更喜欢更好的解决方案,但以下方法仍然可行.您可以将每个routes.rb可以安装在子域中的子应用程序文件中的所有路径包装起来,就像这样
MySubApp::Engine.routes.draw do
constraints Rails.application.routes.named_routes[:sub_app].constraints do
resources :foos
end
end
Run Code Online (Sandbox Code Playgroud)
评论者(自删除?)指出您可以将subdomain选项传递给帮助者,但我们希望避免使用sub_app.foo_url(5, {subdomain: 'sub_app'})每个跨子域链接.即使我们将子域名移动到ENV var并创建了一个包装器,这也不是DRY.
查看指南,它说你可以这样做
namespace :Engine do
resources :controller, :methods
end
Run Code Online (Sandbox Code Playgroud)
引擎只是你的代码的名称间隔