私はRoRで書かれたブログのウェブサイトで働いており、ソーサリーの問題に立ち往生しています。シンプルなログインを作成するために、ドキュメントからチュートリアルを行いました。私の問題は、電子メールを使ってログイン時のユーザーを特定することです。ソーサリー簡単なユーザ名でログインします
私はセッションコントローラを変更して、電子メールではなくパラメータとしてユーザー名を送信し、それに応じてビューを変更しようとしました。
ログには、すべて正常に動作し、ユーザー名とパスワードがデータベースに渡されます。しかし、私は解決策を見つけることができません。生成されるSQL文字列は、引き続き "著者"、 "電子メール"をパラメータとして使用します。
どうすれば修正できますか?
マイログ:
Processing by AuthorSessionsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ForXjJMiPCI6H37xqtPzGwa9XBOHx1yIaGjlZdUd6Iw+G4M5v6s/JXrFcGG5VVyuFl6Is+cr5Zp/fxJcNyS/Tw==", "username"=>"Test", "password"=>"[FILTERED]", "commit"=>"Login"}
Author Load (0.5ms) SELECT "authors".* FROM "authors" WHERE "authors"."email" = 'Test' ORDER BY "authors"."id" ASC LIMIT ? [["LIMIT", 1]]
Rendering author_sessions/new.html.erb within layouts/application
Rendered author_sessions/new.html.erb within layouts/application (2.4ms)
Completed 200 OK in 63ms (Views: 49.6ms | ActiveRecord: 2.5ms)
マイセッションコントローラ:
class AuthorSessionsController < ApplicationController
def new
end
def create
if login(params[:username], params[:password])
redirect_back_or_to(articles_path, notice: 'Logged in successfully.')
else
flash.alert = 'Login failed.'
render action: :new
end
end
def destroy
logout
redirect_to(articles_path, notice: 'Logged out!')
end
end
マイnew.html.erb
<h1>Login</h1>
<%= form_tag author_sessions_path, method: :post do %>
<div class="field">
<%= label_tag :username %>
<%= text_field_tag :username %>
<br>
</div>
<div class="field">
<%= label_tag :password %>
<%= password_field_tag :password %>
<br>
</div>
<div class="actions">
<%= submit_tag 'Login' %>
</div>
<% end %>
<%= link_to 'Back', articles_path %>