http://railscasts.com/episodes/250-authentication-from-scratchでユーザー認証の例を実装しようとしていました。私が彼らのコードを使うとき、それはうまく働きます。しかし、simple_form_for
-tagを使用しようとすると、ルーティングエラーが発生します。
概要をわかりやすくするために、サンプルコードからの抜粋を示します。
ルート.rb:
get "log_out" => "sessions#destroy", :as => "log_out"
get "log_in" => "sessions#new", :as => "log_in"
get "sign_up" => "users#new", :as => "sign_up"
root :to => "users#new"
resources :users
resources :sessions
sessions / new.html.erb:
<h1>Log in</h1>
<%= form_tag sessions_path do %>
<p>
<%= label_tag :email %><br />
<%= text_field_tag :email, params[:email] %>
</p>
<p>
<%= label_tag :password %><br />
<%= password_field_tag :password %>
</p>
<p class="button"><%= submit_tag "Log in" %></p>
<% end %>
基本的にroutes.rbを保持し、sessions/new.html.erbのみを変更しました。
<%= simple_form_for(log_in_path, :html => { :class => 'login form' }) do |f| %>
...
<%= button_tag(type: 'submit', class: "button") do%>
<%= image_tag('key.png', :alt => 'login') %> Log In
<%end%>
これが私が得るエラーです:
No route matches [POST] "/log_in"
sessions_path
タグを使用するかタグに使用するかlog_in_path
に関係なく、このエラーが発生しますsimple_form_for
。
簡単にするために、クラス定義などが少し詰まっているので、バージョンを短くしました。私はすでにそれを調べようとしてかなりの時間を無駄にしていたので、私が欠けているものをすぐに指摘してくれることを本当に望んでいます。
Edit1このコードをいじくりまわしたため、のlog_in_path
代わりに使用しましたsessions_path
。しかし、問題はまだ解決していません。