1

Devise with railsを使用してサインアップに成功した後、ログインに問題があります。

このエラーが発生します。

[POST]「/sessions/user」に一致するルートはありません

理由はわかりません。「セッション」という名前のモデルがあります。これが理由でしょうか。

これがビューです-

<ul class="nav pull-right">
        <% if user_signed_in? %>
          <li><%= link_to current_user.full_name, edit_user_registration_path %></li>
          <li><%= link_to "log out", destroy_user_session_path, method: :delete %></li>
        <% else %>
          <li><%= link_to "Register", new_user_registration_path %></li>
          <li><%= link_to "Log in", new_user_session_path %></li>
        <% end %>
</ul>

そして、これが「レーキルート」からの出力です

 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
       user_password POST   /users/password(.:format)      devise/passwords#create
   new_user_password GET    /users/password/new(.:format)  devise/passwords#new
  edit_user_password GET    /users/password/edit(.:format) devise/passwords#edit
                     PUT    /users/password(.:format)      devise/passwords#update
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
                     PUT    /users(.:format)               devise/registrations#update
                     DELETE /users(.:format)               devise/registrations#destroy
            sessions GET    /sessions(.:format)            sessions#index
                     POST   /sessions(.:format)            sessions#create
         new_session GET    /sessions/new(.:format)        sessions#new
        edit_session GET    /sessions/:id/edit(.:format)   sessions#edit
             session GET    /sessions/:id(.:format)        sessions#show
                     PUT    /sessions/:id(.:format)        sessions#update
                     DELETE /sessions/:id(.:format)        sessions#destroy
                root        /                              sessions#index

検索しましたが、重複は見つかりませんでした。ここで何かを見つけた場合は、お知らせください。これについてあなたの助けをありがとう。

サインインページ-

<div class="row">
<div class="span4">
  <%= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name),     html: {class: "well"} ) do |f| %>

  <fieldset>
    <legend>Sign in</legend>

      <%= f.input :email %>
      <%= f.input :password %>

    <% if devise_mapping.rememberable? -%>
      <div><%= f.input :remember_me, as: :boolean %> </div>
    <% end -%>

    <div><%= f.button :submit, "Sign in" %></div>
  </fieldset>  
  <% end %>

  <%= render "devise/shared/links" %>
  </div>

  <div class="span8">
    <h2>Signing in is easy and secure!</h2>
  </div>
</div>
4

1 に答える 1

2

わかりました。Deviseは、独自のルートと競合するメソッドsession_pathを定義しています:https ://github.com/plataformatec/devise/blob/master/lib/devise/controllers/url_helpers.rb#L9

セッションモデルのルートを指定するときは、セッションモデルの名前を変更するか、別の名前を指定する必要があります。何かのようなもの:

# routes.rb
resources :sessions, as: :logins
于 2012-09-22T22:17:49.407 に答える