不确定我的主题标题是否正确,但这是我的问题
我有一个名为:admin
的名称空间,所以它看起来像mysite.com/admin
。在本节中,我有一些指向此命名空间内的控制器的链接。但由于我们有子域管理员和我的命名空间:admin
,我希望routes.rb
生成的所有链接都预先添加字符串admin.
,所以链接看起来像admin.mysite.com/admin/some_other_path
我尝试向routes.rb
添加约束,但这对我不起作用
答案 0 :(得分:1)
但是因为我们有子域管理员和我的命名空间:admin,所以 我希望routes.rb生成的所有链接都可以预先添加 string admin。
<强>路线强>
在您的路线中,您应该拥有:
constraints({ subdomain: "admin" }) do
namespace :admin do
# routes here
end
end
如果您想要没有管理命名空间的路径(I.E admin.domain.com/some_other_path
),您可以这样做:
constraints({ subdomain: "admin" }) do
namespace :admin, path: "" do
# routes here
end
end
-
<强>网址
使用网址时,您必须使用_url
帮助程序(而不是_path
)。我们昨天刚刚发现了这一点 - _path
助手只能将相对路径附加到您的网址; _url
为您提供了一个完全新鲜的网址
这意味着如果您的路线如下:
admin_root_path "admin/application#index, constraints => {subdomain: "admin"}
您将使用此路线助手调用此信息:
<%= link_to "Admin", admin_root_url %>
这将在调用链接等时为您添加所需的子域
答案 1 :(得分:0)
在管理员命名空间下的routes.rb
中定义路由,如此
namespace :admin, path: '/', constraints: { subdomain: 'admin' } do
constraints(Subdomain) do
# your routes
end
end
此块下定义的路由将始终位于admin的链接中,例如/admin/some_other_path
要将子域添加到管理命名空间,请查看此问题
答案 2 :(得分:0)
你可以这样做:
constraints subdomain: 'admin' do
namespace :admin do
# ...
end
end