我正在關注Michael Hartl的教程,以便使用登錄創建註冊表單。我想我會嘗試添加一個記住我的複選框到登錄表單,並將它的值默認爲0,然後在選中時爲1。在rails 3中,助手是否可以使用params?
我在sessionshelper添加一個if語句:
module SessionsHelper
def login(user)
if params[:remember_me]
cookies.permanent.signed[:remember_token] = [user.id, user.password_salt]
current_user = user
else
cookies[:remember_token] = [user.id, user.password_salt]
current_user = user
end
end
def current_user=(user)
@current_user = user
end
def current_user
@current_user ||= user_from_remember_token
end
def logged_in?
!current_user.nil?
end
def logout
cookies.delete(:remember_token)
current_user = nil
end
private
def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end
def remember_token
cookies.signed[:remember_token] || [nil, nil]
end
end
....但由於某種原因,當過我登錄與盒裝檢查或沒有檢查Cookie的到期日期和時間永遠不會設置。它總是說「在會話結束時」,當我檢查在Firefox中的cookie信息。我錯過了什麼嗎?
我的控制器:
class SessionsController < ApplicationController
def new
end
def create
user = User.authenticate(params[:session][:email], params[:session][:password])
if user.nil?
flash.now[:error] = "Invalid email password combination"
render 'new'
else
login user
redirect_to user
end
end
def destroy
logout
redirect_to root_path
end
end
觀點:
<%= form_for(:session, :url => sessions_path) do |f| %>
<%= f.text_field :email, :placeholder => "Email" %>
<%= f.password_field :password, :placeholder => "Password" %>
Remember me? <%= f.check_box :remember_me, :value => 1 %>
<%= f.submit "Log in", :id => "login_submit" %>
<% end %>
幫助表示讚賞。
你能表單模板添加到這個問題? – rdvdijk
添加了表單。 – LondonGuy
請注意,':value => 1'不是必需的,請參閱[文檔](http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html#method-i-check_box)。 – rdvdijk