我将现有的网站从PHP移植到Ruby on Rails 3,我必须保持网址不变.
我有路线:
get 'companies/' => 'companies#index', :as => :companies
Run Code Online (Sandbox Code Playgroud)
在视图文件中,我有:
link_to 'Companies', companies_path
Run Code Online (Sandbox Code Playgroud)
这会生成URL"http://website.com/companies"而不是"http://website.com/companies/".
我希望网址末尾的斜线.可能吗?
我需要在我的rails应用程序中的某个环境中强制主机.
我可以通过包括使覆盖工作
def default_url_options(opts={})
opts.merge({:host => 'stg.my-host.com'})
end
Run Code Online (Sandbox Code Playgroud)
在app/controllers/application.rb中
但有没有办法在初始化时设置它,最好是在config/environments/...文件中?我想将条件env逻辑保留在控制器之外.
但是,当我尝试
config.action_controller.default_url_options = { ... }
Run Code Online (Sandbox Code Playgroud)
甚至
ActionController::Base.default_url_options = { ... }
Run Code Online (Sandbox Code Playgroud)
我得到"未定义的方法",即使在config.after_initialize {...}中包装
有什么想法吗?
在Rails 3上,我试图从不带斜杠的URL重定向到具有斜杠的规范URL。
match "/test", :to => redirect("/test/")
Run Code Online (Sandbox Code Playgroud)
但是,以上路由同时匹配/ test和/ test /,从而导致重定向循环。
如何使其仅与没有斜杠的版本匹配?
redirect routing ruby-on-rails canonical-link ruby-on-rails-3