服务器前缀和rails路线

发布于 2024-07-20 14:50:13 字数 348 浏览 4 评论 0原文

使用路径选项启动服务器时

 script/server --path=/myapp

当我在有路由的情况下

 map.route 'foo', :controller => 'bar', :action => 'buzz'

,会

ActionController::Routing::Routes.recognize_path('/myapp/foo')

引发错误“没有匹配的路由...”

问题:如何使 Rails 内置路由识别路径前缀? 多谢!

When i'm starting the server with the path option

 script/server --path=/myapp

while having a route

 map.route 'foo', :controller => 'bar', :action => 'buzz'

then

ActionController::Routing::Routes.recognize_path('/myapp/foo')

raises an error "No route matched ..."

Question: How can i make Rails built-in routing recognize with path prefix?
Thanks a lot!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

纵情客 2024-07-27 14:50:13

尝试将 config.action_controller.relative_url_root = "/myapp" 放入environments.rb 中并正常启动服务器。

然后 Rails 会将 /myapp/ 附加到你的所有路由中

Try putting config.action_controller.relative_url_root = "/myapp" in environments.rb and start your server normally.

Then Rails will append /myapp/ to all your routes

国际总奸 2024-07-27 14:50:13

实际上有一个 path_prefix 可用于路由,因此您可以执行以下操作:

map.foo, 'foo', :controller => 'bar', :action => 'buzz', :path_prefix => 'myapp'

这应该为您提供 /myapp/foo 的路由

There is actually a path_prefix available for routes so you can do something like this:

map.foo, 'foo', :controller => 'bar', :action => 'buzz', :path_prefix => 'myapp'

That should give you a route for /myapp/foo

七月上 2024-07-27 14:50:13

非常感谢你的回答!

不幸的是,我无法在 map.foo 中使用 :path_prefix 选项,因为情况并非总是如此(最终用户应该负责设置或不设置前缀,而不用担心任何路线)。

我指出以下内容:

path = '/myapp/foo'

if relative_url_root = ActionController::Base.relative_url_root
  path.sub!(/\A#{relative_url_root}/i, '')
end

params = ActionController::Routing::Routes.recognize(path)
# => {:controller => 'bar', :action => 'buzz'}

thanks a lot for your answers!

unfortunately i can't use the :path_prefix option in map.foo, because it's not always the case (the end-user should be responsible for setting or not the prefix while not worring about any routes).

i fingered out following:

path = '/myapp/foo'

if relative_url_root = ActionController::Base.relative_url_root
  path.sub!(/\A#{relative_url_root}/i, '')
end

params = ActionController::Routing::Routes.recognize(path)
# => {:controller => 'bar', :action => 'buzz'}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文