超単純認証 http://railscasts.com/episodes/21-super-simple-authenticationのレールキャストに従っています レール3を使用しているため、ルートとコントローラーの名前をから変更しています変更するのはユーザーへのセッションだけです
私は、スクリーンキャストで new.html.erb ファイルにある問題に遭遇しました。
<div class="content">
<p>
<% form_tag user_path do %>
Password: <%= text_field_tag :password %>
<%end%>
</p>
</div>
これを試すと、エラーが発生しますhttp://localhost:3000/login
{:action="show", :controller="user"} に一致するルートはありません
rake を使用してルートを調べたところ、これが得られました。
user_index GET /user(.:format) user#index
POST /user(.:format) user#create
new_user GET /user/new(.:format) user#new
edit_user GET /user/:id/edit(.:format) user#edit
user GET /user/:id(.:format) user#show
PUT /user/:id(.:format) user#update
DELETE /user/:id(.:format) user#destroy
login /login(.:format) user#new
logout /logout(.:format) user#destroy
私のルートファイルにはこれがあります。
resources :user
match 'login' => 'user#new'
match 'logout' => 'user#destroy'
そのため、スクリーン キャスト ファイルが <% form_tag user_path do %> という行でどのように機能するかわかりません。これを new_user_path に変更すると、new.html.erb ページが表示されます。しかし、今は Password: <%= text_field_tag :password %> フィールドがページに表示されません。ここで何が間違っていますか。
アップデート:
そのため、ユーザーコントローラーの代わりにセッションと呼ばれるコントローラーを作成しましたが、SHUMAcupcakeのコメントに基づいて、間違っています。ユーザーコントローラーを削除して、スクリーンキャストと同じようにセッションと呼ばれるものを作成することにしました。私が疑ったように、同じ問題が発生します。唯一の違いは、すべてのルートが予想どおりユーザーではなくセッションという名前になっていることです。
はい、アプリを再起動しましたが、同じ問題が発生します。私の rake routes の出力を見てください。user_path が、スクリーンキャストによるとアクションを作成するための意図された場所ではなく、show アクションに移動していることがわかります。