Rails应用程序中的前缀URL

Tru*_*oft 5 routing ruby-on-rails

我希望我的2.3 Rails应用程序中的所有页面都有以前缀为url的URL:

www.example.com/app/
Run Code Online (Sandbox Code Playgroud)

routes.rb按以下方式写了这篇文章:

# I named the first part of the url ':appl'
map.root :appl => "app", :controller => "home"

# Default routes
map.connect ':appl/:controller/:action/:id'
map.connect ':appl/:controller/:action/:id.:format'
Run Code Online (Sandbox Code Playgroud)

这一切都很好,除了map.resources我所拥有的

map.resources :pages
Run Code Online (Sandbox Code Playgroud)

现在无论我在哪里,edit_page_path或者page生成的url都不正确,因为app在开头没有插入.我试着namespacescope,像我见过这里章节2.6,但没有成功.

我该怎么做?是:appl在路由的坏主意?

Chr*_*ald 6

如果要在Passenger上部署,则只需设置(在您的Web服务器配置中):

RailsBaseURI /app

然后在你的应用程序配置中:

config.action_controller.relative_url_root = '/app'
Run Code Online (Sandbox Code Playgroud)

你不应该担心除此之外的任何子项目.它应该工作.有关更多详细信息,请参阅Passenger文档.

对于mongrel,您可以使用--prefix选项

script/server mongrel -P /app
Run Code Online (Sandbox Code Playgroud)


Tru*_*oft 0

我是这样写的routes.rb

map.resources :pages,   :as => 'app/pages'
Run Code Online (Sandbox Code Playgroud)

现在,edit_page_path其他人返回正确的路径,前缀为'app'