У меня есть форма, в которой пользователь ('member') отправляет 4-значный пин-код, который затем сохраняется в переменной сеанса, называемой :submitted_pin
. По какой-то причине быстрое выражение if / else не работает должным образом, и я предполагаю, что это глупая ошибка с моей стороны, но если бы вы захотели взглянуть, я был бы очень признателен!
View
<%= form_for :member_pin, :url => { :action => "verify_pin", :id => member.id } do |f| %>`
<%= f.label :pin %>
<%= f.text_field :pin %>
<%= f.submit 'Submit' %>
Контроллер
Перед фильтром
before_filter :validate_pin, :only => :show
Действие (POST Route)
def verify_pin
@member = Member.find(params[:id])
session[:submitted_pin] = params[:member_pin][:pin]
redirect_to @member
end
Фильтр
def validate_pin
@member = Member.find(params[:id])
@member_pin = @member.pin
if session[:submitted_pin] == @member_pin
render @member
else
redirect_to '/'
end
end
И результатом всего этого является перенаправление на мой root_url, независимо от того, что, даже если введенный ПИН-код соответствует , соответствует ли этот пин-код в базе данных для этого пользователя. Помогите! Спасибо:)