Forum: Ruby on Rails How do you deal with non-model property form values

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
6661ef9d747db3af8896cd94959d717d?d=identicon&s=25 Paul Barry (Guest)
on 2006-01-21 22:05
(Received via mailing list)
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>&nbsp;</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?
D90ef6808433e63203e15a5c2dadb0bb?d=identicon&s=25 Ben Reubenstien (Guest)
on 2006-01-21 22:12
(Received via mailing list)
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
9e7c9c07e64a6b7b075097831c360d53?d=identicon&s=25 Bill Katz (Guest)
on 2006-01-22 06:26
(Received via mailing list)
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
6661ef9d747db3af8896cd94959d717d?d=identicon&s=25 Paul Barry (Guest)
on 2006-01-23 17:56
(Received via mailing list)
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.
Ad7805c9fcc1f13efc6ed11251a6c4d2?d=identicon&s=25 Alex Young (Guest)
on 2006-01-23 17:59
(Received via mailing list)
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
6661ef9d747db3af8896cd94959d717d?d=identicon&s=25 Paul Barry (Guest)
on 2006-01-23 18:08
(Received via mailing list)
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
This topic is locked and can not be replied to.