开发者

Prefix urls in Rails application

I want all my pages in my 2.3 Rails application to have the url prefixed with:

www.example.com/app/

and I did this writing in routes.rb the following lines:

# 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'

It all works fine, with the exception of map.resources, where I have

map.resources :pages

and now wherever I have edit_page_path or page开发者_StackOverflow中文版, the generated url's are not correct, because app is not inserted at the beginning. I've tried with namespace and scope, like I've seen here in chapter 2.6, but with no success.

How should I do this? Is the :appl in routes a bad idea?


If you are deploying on Passenger, you just need to set (in your webserver config):

RailsBaseURI /app

And then in your app's config:

config.action_controller.relative_url_root = '/app'

You shouldn't need to worry about any sub-uri stuff beyond that. It should Just Work. See the Passenger documentation for more details.

For mongrel, you can use the --prefix option

script/server mongrel -P /app


This is how I wrote in routes.rb:

map.resources :pages,   :as => 'app/pages'

Now, edit_page_path and others return the right path, prefixed with 'app'

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜