I have an “Item” class in my models which corresponds to a SQL table,
and a “Cart” class and a “CartItem” class which do not. The Item
class does not have an amount object, which is transitory, so I’ve put
this amount object in my CartItem class:
class CartItem
attr_reader :item, :amount
def initialize( item ) @item = item
end
def set_amount( amount )
This.amount = amount
end
end
I have a list of items in a viewer form, and I’d like to pass
associated amount to my CartItem when the user hits the “Add to Cart”
button. I’ve tried many variations of text_field and text_field_tag
in:
I know the text_field up there is severely mangled and won’t work–but
it’s an example of the 2000th try, the last several hundred out of
pure desperation. Can anyone help with the proper syntax for the
text_field in the .html.emb file?
Text fields don’t take actions, they’re just text fields with some
optional aesthetics. put :amount in there, and if item.amount exists,
it will be filled in.
Also, ruby doesn’t use This, it’s “self.”
There may be other problems in find_cart and add_item.
The text_field view helper generates an HTML input tag. Thus, there’s
no
attribute on the input tag called ‘action’ in the X/HTML spec.
Next, when to use text_field and text_field_tag?
text_field: if you’re creating or updating a model.
text_field_tag: if you’re NOT creating or updating a model.
Thus, I’m guessing that you’re simply updating a session variable when
you’re performing the
@cart.add_item( item )
If this is the case, then you should use text_field_tag within a
form_tag.
You can see
example usage of ‘form_tag’ and ‘text_field_tag’ here:
If you are in fact creating or updating a model, then you should use
test_field within a form_for.
You can see examples usage of ‘form_for’ and ‘text_field’ here:
Finally, I would recommend getting access to a copy of “Agile Web
Development with Rails 3rd ed”
and/or obtaining the really great screencasts on the subject, “Mastering
Rails Form”,
Thanks, Eric. Â What I’m struggling with is how to set a variable,
rather than get one. Â What would be the proper form for setting
SomeObject.amount?
I don’t understand the question here. Are you trying to set the
content of the text field when it is displayed or set a variable in
your controller? If the latter then the value the user enters gets
passed to the controller in the params hash.
Thanks, Conrad. I did the “depot” tutorial in the Agile Rails book
3rd ed, and the whole pod/screencast on learningrails.com. Both are
light on forms. I just downloaded the 3 Mastering Rails Form
screencasts, and am going through the first–it’s excellent. Just
knowing about debug params is worth its weight in gold I’ll go
through the first one, try my code again, then if I’m still having
trouble, repost. Thanks, Colin & Eric for your patience with this
noob
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.