Baz*_*ley 16 ruby-on-rails devise
我正在尝试使用routes.rb文件中的以下代码将Devise与RESTful用户资源结合使用:
resources :users, :only => [:index, :show]
devise_for :users
Run Code Online (Sandbox Code Playgroud)
但是url localhost:3000/users/sign_up没有进入设计注册页面,而是产生错误"无法找到具有ID = sign_up的用户",因此它认为该url指向显示的动作用户控制器.我发现交换行的顺序会产生预期的行为:
devise_for :users
resources :users, :only => [:index, :show]
Run Code Online (Sandbox Code Playgroud)
现在,当你转到localhost:3000/users/sign_up时,你确实得到了注册页面,然后转到localhost:3000/users/1按照预期命中用户控制器的show动作.
我的问题是:正在改变这样的代码顺序正确的方法来使设计与用户资源一起工作?还是有更深层次的错误?我怀疑只是交换这两行代码不能解决问题!
Vla*_*ich 23
在这些情况下,我的建议是使用rake routes
In路由检查路由定义的顺序,因为早期路由优先.
所以在你的情况下resources :users, :only => [:index, :show]
创建了/users/:id(.:format)
一条指向的restfull 路线,{:action=>"show", :controller=>"users"}
当你去Devise的注册网址时,/users/sign-up
它认为:id
用户注册了"注册" 并且自然无法找到它.
现在,如果您首先进行设计路由设置,则设计路线优先于稍后指定的任何路径,并且您会得到预期的行为.
归档时间: |
|
查看次数: |
13064 次 |
最近记录: |