How do you deal with non-model property form values

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.