簡體   English   中英

Ruby on Rails Devise編輯注冊路由錯誤

[英]Ruby on Rails Devise Edit Registration Routing Error

我正在使用Ruby 2.0.0和Rails 4.0.2。 當我單擊“編輯配置文件”頁面上的“提交”按鈕時,出現以下路由錯誤:

路由錯誤

沒有路由匹配[PATCH]“ / users / sign_in”

我不完全了解devise路由的工作方式,因為我看到的route.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

您的simple_form指向錯誤的提交URL。

它說

<%= 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| %

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM