8

アプリにDeviseをインストールしたところです.Michael Hartlのチュートリアルのように、以前はゼロから行っていました.

現在、サインアップとログアウトができます。しかし、ログインするとエラーが発生します:

No route matches [POST] "/sessions/user"

(正しい)パスワードの有無にかかわらず、サインイン/ログインボタンをクリックすると発生します。

私のルートファイルは次のとおりです。

SampleApp::Application.routes.draw do
devise_for :users, path_names: { sign_in: "login", sign_out: "logout"}

resources :users do
  resources :bookings, only: [:show]
  end
resources :bookings
resources :sessions

# match '/signup',  to: 'devise/registrations#new', via: :get
# match '/signin',  to: 'devise/sessions#new', via: [:post, :get]
# match '/signout', to: 'devise/sessions#destroy', via: :delete
match '/admin',   to: 'admin#new', via:  :get
match "bookings/new", to: 'bookings#new', via: [:post, :get]

devise_scope :user do 
  root to: 'static_pages#home'
end

[編集]

私のフォームはdeviseのデフォルトです:

<h2>Sign in</h2>

<%= form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %>
  <div><%= f.label :email %><br />
  <%= f.email_field :email, :autofocus => true %></div>
  <div><%= f.label :password %><br />
  <%= f.password_field :password %></div>
  <% if devise_mapping.rememberable? -%>
    <div><%= f.check_box :remember_me %>
    <%= f.label :remember_me %></div>
  <% end -%>
  <div><%= f.submit "Sign in" %></div>
<% end %>

現在、Michael Hartl チュートリアルのように、Session Controller や Helper に関するコードはありません。

セッションに関する私のレーキ ルートは次のとおりです。

            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
                     PATCH    /sessions/:id(.:format)                sessions#update
                     PUT      /sessions/:id(.:format)                sessions#update
                     DELETE   /sessions/:id(.:format)                sessions#destroy

[解決済み]

ルートファイルを更新しました

  devise_scope :user do 
    root to: 'static_pages#home'
    match '/sessions/user', to: 'devise/sessions#create', via: :post
  end
4

3 に答える 3

6

私が思いついた可能な解決策は次のとおりです。

 devise_scope :user do 
    root to: 'static_pages#home'
    match '/sessions/user', to: 'devise/sessions#create', via: :post
  end
于 2014-01-09T15:29:05.683 に答える
0

ビューで、sessions/newサインイン ボタンに含めたリンクを確認します。間違ったパスに移動するuser代わりに、または同様のタイプミスがある可能性があります。:userの出力も確認してください$ rake routes- サインイン ボタンは存在するパスを指していますか? でいくつかの名前付きルートを作成しましたroutes.rbか?

Hartl チュートリアルでは、デフォルトに従った場合、ログインすると、

sessions#newusers#show_ user_path_

于 2013-08-23T06:54:12.023 に答える