我在我的用户模型中加入了设计,但当我尝试注册某人时,我收到此错误没有路由匹配[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" %>
答案 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| %>