I have a User ActiveRecord model that has email and password properties.
I
want to build a login for that has a “remember me” option. My view
looks
like this:
<% @page_title = “Login” -%>
<%= error_messages_for ‘user’ %>
<%= form_tag %>
Email: |
<%= text_field("user", "email") %> |
Password: |
<%= password_field("user", "password") %> |
|
Automatically log me in on this
computer |
|
|
<%= end_form_tag %>
I would like to use the check_box FormHelper method, but remember is not
a
property of the User object, and I would rather not add it, since it
doesn’t
real make sense. What’s the best way to handle this?
Hi Paul ~
You can pass it back in a separate hash. So you could set name =
extradata[remember], then access it separately from your user items in
the
form.
params[:extradata][:remember]
Hope this helps,
~ Ben
Use check_box_tag() and an instance variable that isn’t in your User
object. Like Ben says, it will still be accessible from params. In
general,
all the form helpers with _tag endings are useful for instance variables
that are bookkeeping and not part of your real model.
-Bill
Paul B. wrote:
Ok, so I did this in my index.rhtml:
<%= check_box(“form”,“remember”) %>
That looks for an instance variable called @form with a method called
‘remember’. What you probably want, judging by your controller code,
is:
<%= check_box_tag(‘form[remember]’, params[:form][:remember]) %>
And then remember to default it on the first time in your action.
–
Alex
Yeah, I just set it to do this:
<%= check_box_tag(“remember”,1,params[:remember]) %>
I was using :form because that was Ben’s suggestion (he actually
suggested
using :extradata). That seems unnecessary. So I removed that hand
modified
the controller to just call params[:remember].
Thanks for your help everyone
Ok, so I did this in my index.rhtml:
<%= check_box(“form”,“remember”) %>
And then my controller method looks like this:
def index
if request.get?
@user = User.new
else
@user = User.new(params[:user])
logger.info(params[:form][:remember])
flash[:notice] = “Invalid username/password”
end
end
when i submit the form, the form.remember value of 1 prints out, if I
check
the remeber checkbox. But when the form renders again, the checkbox is
unchecked. Shouldn’t check_box handle setting the value of the checkbox
correctly? I also tried check_box_tag, but neither one sets the value
of
the checkbox correctly.