所以,我之前从未使用过设计,并试图通过http://railscasts.com/episodes/209-introducing-devise在我的程序中实现它。我安装了它,一切都是按照这个人的说法,然后当我尝试去http://localhost:3000/users/sign_up时,我收到了这个错误:
Routing Error
No route matches [GET] "/users/sign_up"
这是我在耙路线时所得到的:
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session GET /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
POST /users/registration(.:format) {:action=>"create", :controller=>"devise/registrations"}
new GET /users/registration/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit GET /users/registration/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users/registration(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users/registration(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
vote_post POST /posts/:id/vote(.:format) {:action=>"vote", :controller=>"posts"}
posts GET /posts(.:format) {:action=>"index", :controller=>"posts"}
POST /posts(.:format) {:action=>"create", :controller=>"posts"}
new_post GET /posts/new(.:format) {:action=>"new", :controller=>"posts"}
edit_post GET /posts/:id/edit(.:format) {:action=>"edit", :controller=>"posts"}
post GET /posts/:id(.:format) {:action=>"show", :controller=>"posts"}
PUT /posts/:id(.:format) {:action=>"update", :controller=>"posts"}
DELETE /posts/:id(.:format) {:action=>"destroy", :controller=>"posts"}
root / {:controller=>"users", :action=>"index"}
如果您观看视频,那家伙就可以访问该网址,它只是有效。我注意到有一个[GET] /users/registration/sign_up(.:format)但没有[GET] / users / sign_up就像视频中的人一样。有什么我想念的吗?
P.S。
这是我尝试转到上面列出的其中一条路线时遇到的错误(user / sign_in):
NoMethodError in Devise/registrations#new
Showing /Users/davidfleischhauer/.rvm/gems/ruby-1.9.2-p290/gems/devise- 1.1.rc0/app/views/devise/registrations/new.html.erb where line #3 raised:
undefined method `user_registration_path' for #<#<Class:0x007f85eafec758>:0x007f85eaf77ed0>
答案 0 :(得分:2)
您必须使用new_user_registration_path才能创建指向注册页面的链接。您必须使用new_user_session_path才能创建指向sign_in的链接。
答案 1 :(得分:1)
请记住视频是一年+旧版本:)
如果您查看生成路线的current devise source,您会发现它显然不再创建“sign_up”路线 - 看起来注册路径是当前方法。
看起来你似乎正在使用候选版本,这总是让我有点紧张,因为这是一个发布候选并且不一定100%稳定 - 这可能解释了为什么默认模板正在使用不存在的路径变量。
答案 2 :(得分:0)
我想弄清楚你为什么使用Devise版本1.1rc0而不是1.4.7的最新宝石?我有几个应用程序都在运行这个sign_up
路径工作正常的最新版本。我建议更新到宝石的最新版本,然后再试一次。除此之外,我只能想到可能由routes.rb
文件中的某些内容引起的问题,或者您是否试图覆盖设计注册控制器。
答案 3 :(得分:0)
添加到routes.rb,这是:
devise_for :users do
get'users/sign_out'=>'devise/sessions#destroy'
end
是签名
用于sign_up转到config/initializers/secret_token.rb
并复制行:config.secret_token ='...'
并将其粘贴到config / aplication.rb