2013-12-15 53 views
2

我正在使用Ruby 2.0.0和Rails 4.0.2。当我点击提交编辑个人资料页上的按钮,我得到这个路由错误:Ruby on Rails设计编辑注册路由错误

路由错误

没有路由匹配[PATCH]“/用户/ sign_in”

我完全不明白怎么因为我看到routes.rb文件中唯一相关的行是devise_for:users,所以设计路由工作。这里是我的一些文件。谢谢。

/config/routes.rb

SampleApplication::Application.routes.draw do 

    resources :pins 

    devise_for :users 

    root 'pages#home' 
    get 'about' => 'pages#about' 
    get 'contact' => 'pages#contact' 

end 

/models/user.rb

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, #:recoverable, 
     :rememberable, :trackable, :validatable 

    has_many :pins 
end 

/views/devise/registrations/edit.html.erb

<h2>Edit <%= resource_name.to_s.humanize %></h2> 

<%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), html:   {class: 'form-horizontal'}) do |f| %> 

    <%= f.error_notification %> 

    <%= f.input :password, label: "New Password", autocomplete: "off" %> 
    <%= f.input :password_confirmation, label: "New Password", autocomplete: "off" %> 
    <%= f.input :current_password %> 

    <div class="form-actions"> 
    <%= f.submit "Update", class: "btn btn-primary"%> 
    </div> 
<% end %> 

<h3>Cancel my account</h3> 

<p>Unhappy? <%= link_to "Cancel my account", registration_path(resource_name), :confirm => "Are  you sure?", :method => :delete %>.</p> 

<%= link_to "Back", :back %> 

耙路线命令

    Prefix Verb URI Pattern    Controller#Action 
        pins GET /pins(.:format)   pins#index 
         POST /pins(.:format)   pins#create 
       new_pin GET /pins/new(.:format)  pins#new 
       edit_pin GET /pins/:id/edit(.:format) pins#edit 
        pin GET /pins/:id(.:format)  pins#show 
         PATCH /pins/:id(.:format)  pins#update 
         PUT /pins/:id(.:format)  pins#update 
         DELETE /pins/:id(.:format)  pins#destroy 
     new_user_session GET /users/sign_in(.:format) devise/sessions#new 
      user_session POST /users/sign_in(.:format) devise/sessions#create 
    destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy 
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 
         PATCH /users(.:format)   devise/registrations#update 
         PUT /users(.:format)   devise/registrations#update 
         DELETE /users(.:format)   devise/registrations#destroy 
        root GET /      pages#home 
        about GET /about(.:format)   pages#about 
       contact GET /contact(.:format)  pages#contact 
+0

试着做一耙路线,在这里张贴 –

+0

我加入吧。谢谢。 – user3104471

回答

1

您的simple_form指向错误的提交网址。

它说

<%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name), html:   {class: 'form-horizontal'}) do |f| % 

url应指向user_registration_path,不session_path,所以

<%= simple_form_for(resource, :as => resource_name, :url => user_registration_path(resource_name), html:   {class: 'form-horizontal'}) do |f| % 
+0

我将session_path更改为registration_path,它工作。谢谢! – user3104471