没有路线匹配[POST]" /users/sign_up.user"

时间:2015-06-18 09:52:21

标签: ruby-on-rails devise

我在我的用户模型中加入了设计,但当我尝试注册某人时,我收到此错误没有路由匹配[POST]" /users/sign_up.user" 我也在我的应用程序中设计了视图和控制器。但是,当我点击注册按钮时,我收到了该错误。

这是我的 routes.rb

Rails.application.routes.draw do
  devise_for :users, controllers: { registrations: "users/registrations" }

  #resources :users  

  #resources :admin

  devise_scope :user do
    root :to => 'devise/sessions#new'
  end
end

这是我的表格     

注册

<%= form_for(resource, as: resource_name, url:     new_user_registration_path(resource_name)) do |f| %>
  <%= devise_error_messages! %>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true %>
  </div>

  <div class="field">
    <%= f.label :password %>
    <% if @validatable %>
    <em>(<%= @minimum_password_length %> characters minimum)</em>
    <% end %><br />
<%= f.password_field :password, autocomplete: "off" %>
  </div>

  <div class="field">
    <%= f.label :password_confirmation %><br />
    <%= f.password_field :password_confirmation, autocomplete: "off" %>
  </div>

  <div class="actions">
    <%= f.submit "Sign up" %>
  </div>
<% end %>

<%= render "users/shared/links" %>

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并且在一段时间内遇到了困难。我的解决方案可能与您的具体情况无关,但值得一试。

在我看来,我使用了erb的button_to标记来点​​击new_user_registration_path

<%= button_to 'Sign up', new_user_registration_path %>

当路由是GET请求时,这是发送POST请求。将button_to代码更改为link_to代码可以解决问题:

<%= link_to 'Sign up', new_user_registration_path %>

答案 1 :(得分:0)

由于您将路线更改为:

devise_for :users, controllers: { registrations: "users/registrations" }

您在表单中使用的路径中不需要资源。简单地把它取出来它应该是这样的:

<%= form_for(resource, as: resource_name, url: new_user_registration_path) do |f| %>