很奇怪,我知道但在生产中使用user_root_path不起作用.当我点击链接myapp.com/user我得到一个404页面.
日志文件不显示吐出但尝试失败:
Started GET "/user" for 123.125.146.23 at 2011-01-19 19:40:45 +0000
ActionController::RoutingError (uninitialized constant User::UsersController):
现在,查看有关此单位化常量的唯一方法是打开rails c并在控制台中键入常量.这是发生的事情:
ruby-1.9.2-p136 :005 > User::UsersController
(irb):5: warning: toplevel constant UsersController referenced by User::UsersController
=> UsersController
现在一些挖掘发现这个顶级警告可能会搞乱它.但日志说bubkiss.
所以我改变了路线文件:
devise_for :users
namespace :user do
root :to => "users#index"
end
resources :subdomains
match '/user' => 'users#index'
至:
devise_for :users
namespace :user do
root :to => "subdomains#index"
end
resources :subdomains
match '/user' => 'users#index', :controller => :users
想法可能是生产环境不喜欢用户#index …所以我把它改成了subdomains #index.我可以得/子域没问题.所以实际页面会显示,这是捏造的路线…任何想法?
设置:rails 3.0.3,设计1.1.5(并且升级了1.1.3,同样的问题)
最佳答案 我用了
devise_for :users do
match 'user' => "users#index", :as => :user_root, :constraints => { :domain => SITE_DOMAIN}
end
在您的每个development.rb或production.rb文件中,您将拥有SITE_DOMAIN常量,如下所示:
::SITE_DOMAIN = "lvh.me"
#in development.rb I was using subdomains with the helpful lvh.me google it.
或者在production.rb
::SITE_DOMAIN = "mydomain.com"
我再次需要子域名,所以这对我有用.
设计维基不适合我.一旦我有时间,我也会更新,或提交一张票,但这只是那些需要它的谷歌果汁.