2012-03-18 143 views
3

此問題已被以前報告,但我仍然無法找到它的修復程序。Ruby on Rails - 設計註冊鏈接不工作 - 未定義的方法`user_registration_path'

我已經在我的新RoR項目中安裝了插件Devise。當我點擊註冊鏈接上,我重定向到以下航線:

http://localhost:3000/users/registration/sign_up

不過,我得到以下錯誤:

undefined method `user_registration_path' for #<#<Class:0x007fd5d3503d58>:0x007fd5d3b0dcd0> 

提取的源(左右線#5):

2: <h1>Sign up</h1> 
3: </div> 
4: 
5: <%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %> 
6: <%= f.error_notification %> 
7: 
8: <div class="inputs"> 

我的路線產生如下:

new_user_session GET /users/sign_in(.:format)    devise/sessions#new 
     user_session POST /users/sign_in(.:format)    devise/sessions#create 
destroy_user_session GET /users/sign_out(.:format)    devise/sessions#destroy 
      password POST /users/password(.:format)    devise/passwords#create {:name_prefix=>:user} 
     new_password GET /users/password/new(.:format)   devise/passwords#new {:name_prefix=>:user} 
     edit_password GET /users/password/edit(.:format)  devise/passwords#edit {:name_prefix=>:user} 
        PUT /users/password(.:format)    devise/passwords#update {:name_prefix=>:user} 
        POST /users/registration(.:format)   devise/registrations#create {:name_prefix=>"user_registration"} 
       new GET /users/registration/sign_up(.:format) devise/registrations#new {:name_prefix=>"user_registration"} 
       edit GET /users/registration/edit(.:format) devise/registrations#edit {:name_prefix=>"user_registration"} 
        PUT /users/registration(.:format)   devise/registrations#update {:name_prefix=>"user_registration"} 
        DELETE /users/registration(.:format)   devise/registrations#destroy {:name_prefix=>"user_registration"} 
      home_index GET /home/index(.:format)     home#index 
       users GET /users(.:format)      users#index 
        POST /users(.:format)      users#create 
      new_user GET /users/new(.:format)     users#new 
      edit_user GET /users/:id/edit(.:format)    users#edit 
       user GET /users/:id(.:format)     users#show 
        PUT /users/:id(.:format)     users#update 
        DELETE /users/:id(.:format)     users#destroy 
       root  /         home#index 

我的routes.rb具有下面的代碼:

devise_for :users 

    get "home/index" 

    resources :users 
    root :to => "home#index" 

回答

1

更新:我認爲你必須指定「方法」爲形式的「POST」。

5: <%= simple_form_for(resource, :as => resource_name, 
6: :url => registration_path(resource_name), 
7: :method => :POST) do |f| %> 

=====(以下棄用答案)

我認爲你必須在你的config/routes.rb中文件的問題。預期輸出是:

cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel 
     user_registration POST /users(.:format)   devise/registrations#create 
    new_user_registration GET /users/sign_up(.:format) devise/registrations#new 
    edit_user_registration GET /users/edit(.:format)  devise/registrations#edit 

所以一定要確保你的config/routes.rb中有這樣臨客代碼:

devise_for :users 
+0

我的routes.rb有devise_for:用戶。我編輯了我的問題,包括routes.rb。任何想法? – Karan 2012-03-18 23:03:09

+0

這是設計的版本!我正在使用1.1.0 RC – Karan 2012-03-18 23:30:32

+0

感謝您的回答tho :)您的routes.rb中的區別指出我的設計寶石可能有問題。 – Karan 2012-03-18 23:42:10

0

試試這可能是幫助: 如果您提到任何設計寶石版本刪除,並只保留寶石「設計」,並在終端鍵入包更新命令。

11

我有這個問題,並重新啓動rails服務器爲我修復它

+4

我的天......我討厭這是什麼答案。爲我工作...... – 2014-03-17 18:19:37