在轨道上的红宝石设计错误

时间:2011-10-01 21:09:40

标签: ruby-on-rails ruby devise

所以,我之前从未使用过设计,并试图通过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>

4 个答案:

答案 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