[:session] を params に追加することに混乱しています。また、私のウェブサイトが壊れているようです。誰かがこれが私に何をするのか説明してもらえますか?
class SessionsController < ApplicationController
.
.
.
def create
user = User.find_by_email(params[:session][:email])
if user && user.authenticate(params[:session][:password])
sign_in user
redirect_back_or user
else
flash.now[:error] = 'Invalid email/password combination'
render 'new'
end
end
.
.
.
end
エラーメッセージ:
1) 無効な情報での認証サインイン 失敗/エラー: before { click_button "サインイン" } NoMethodError: undefined method []' for nil:NilClass
# ./app/controllers/sessions_controller.rb:7:in
create' # (eval):2:in click_button'
# ./spec/requests/authentication_pages_spec.rb:18:in
block (4 levels) in '
編集 8/2
この問題は、form_for から form_tag への切り替えに関連していると思います。適切に含める方法がわからなかったため、スイッチのセッションへの参照を失いました。誰かがこの問題について何かアドバイスがあれば、それは最もありがたいです. 代わりに params[:session][:email] にしたいという実際的な理由があるのか 、それとも組織のためだけなのか疑問に思っています。
new.html.erb
<% provide(:title, "Sign in") %>
<h1>Sign in</h1>
<div class="row">
<div class="span6 offset3">
<%= form_tag sessions_path do %>
<%= label_tag :email %>
<%= text_field_tag :email %>
<%= label_tag :password %>
<%= password_field_tag :password %>
<%= submit_tag "Sign in", class: "btn btn-large btn-primary" %>
<% end %>
<p>New user? <%= link_to "Sign up now!", signup_path %></p>
</div>
</div>