0

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。しかし、問題はまだ解決していません。

4

1 に答える 1

1

あなたがあなたのroutes.rbで逃したように見えます:

post "log_in" => "sessions#create", :as => "log_in"

あなたがあなたのセッションに作成アクションを持っているかどうかわからない-コントローラー....

于 2013-02-28T16:11:36.977 に答える