면책 조항 : 레일에 초보자 용 내가 양식을 만들려고 해요, 어쨌든 3.2레일 콘트롤러 파라미터는 디버그 출력에서 볼 수는 있지만 null입니다.
를 레일을 사용하고 상인이 로그인하는 나는 로그인의 양식 입력을 기반으로 새로운 세션을 만들려고 MerchantSessionsController 있습니다.
이 무엇을이다 내 응용 프로그램/뷰/merchant_sessions/new.html.erb에있는
<%= form_for(:merchant_session, :url => merchant_sessions_path) do |f| %>
<div class="field">
<%= f.label :userName %><br />
<%= f.text_field :userName %>
</div>
<div class="field">
<%= f.label :password %><br />
<%= f.password_field :password %>
</div>
<div class="actions">
<%= f.submit "Sign in" %>
</div>
<% end %>
파일 응용 프로그램 \ 컨트롤러 \ merchant_sessions_controller.rb에는 다음이 포함
def create
merchant = Merchant.find_by_userName(params[:userName])
if merchant && merchant.authenticate(params[:password])
merchant_session[:merchant_id] = merchant.id
redirect_to root_url, :notice => "Merchanthas been logged in"
else
flash.now[:error] = "Invalid username or password."
@title = "Merchant Signin"
render "new"
end
end
불행히도 가맹점 로그인 페이지의 디버그 출력에서 사용자 이름과 비밀번호가 확실히 전달되는 것을 볼 수 있지만 params [: userName] 및 params [: password]는 계속 전달되지 않습니다.
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
utf8: ✓
authenticity_token: 8WsOviJyY1kktPq9dDO+OFePdSKf2uGLY3Pnc4bU2tc=
merchant_session: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
userName: asd
password: ddsad
commit: Sign in
action: create
controller: merchant_sessions
params [: action] 매개 변수에도 액세스하려고 시도했지만 정상적으로 작동했습니다. userName 및 password 매개 변수가 nil 인 이유는 무엇입니까? MerchantSessionsController (이전의 SessionsController)의 이름을 변경했으나 문제가 될 것이라고 생각하지 않습니다.
답변을 게시하기 전에 약 1 분을 알아 냈습니다. 아, 한 프레임 워크에 대해 많은 것을 알 수 있지만 다른 프레임 워크에서 멍청한 실수를 저 지르지 못하는 것이 놀랍지 않습니까? – you786
@ yaj786 : 얼굴에서 당신을 응시하는 것이 너무 어렵다는 것이 놀랍습니다. 그것들은 가장 까다로운 버그 중 일부입니다. –