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 %> <table> <tr> <td align="right" width="1%" nowrap="nowrap"><label class="required" for="user_email">Email</label>:</td> <td><%= text_field("user", "email") %></td> </tr> <tr> <td align="right" width="1%" nowrap="nowrap"><label class="required" for="user_password">Password</label>:</td> <td><%= password_field("user", "password") %></td> </tr> <tr> <td align="right"><input type="checkbox" id="remember" name="remember"/></td> <td><label for="remember">Automatically log me in on this computer</label></td> </tr> <tr> <td> </td> <td><input type="submit" value="Login" /></td> </tr> </table> <%= 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?
on 2006-01-21 22:05
on 2006-01-21 22:12
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
on 2006-01-22 06:26
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
on 2006-01-23 17:56
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.
on 2006-01-23 17:59
Paul Barry 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
on 2006-01-23 18:08
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