Hello to all!
I''m new on this forum, and i''m getting started in Ruby on
Rails 2.0. I''m
following the tutorial on AWDWR, and i found this error i can''t solve:
I''ve this code for a type="select" field in a form wrapped in
the
form_for helper. In the Order model i''ve the definition of
PAYMENT_TYPES:
form.select :pay_type,
Order::PAYMENT_TYPES,
:prompt => "Select a payment method"
then, when i run my page, it shows this error message:
Showing store/checkout.html.erb where line #20 raised:
undefined method `paytype'' for #<Order:0x34ba82c>
Extracted source (around line #20):
17: </p>
18: <p>
19: <label for="order_pay_type" >Pay
with:</label>
20: <%= form.select :paytype,
21: Order::PAYMENT_TYPES,
22: :prompt => "Select a payment
method"
%>
23: </p>
then, if i define a method called pay_type in the Order model, it works,
but i feel like there''s something wrong because in the tutorial it
never
mentions to use this "pay_type" method. Then, when i implement other
functions involving this form, it shows many times this error about
"undefined method ''pay_types''", also if
it''s declared...
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
On 3 Apr 2008, at 11:54, Emanuele Bastianelli wrote:> > Hello to all! > I''m new on this forum, and i''m getting started in Ruby on Rails 2.0. > I''m > following the tutorial on AWDWR, and i found this error i can''t solve: > I''ve this code for a type="select" field in a form wrapped in the > form_for helper. In the Order model i''ve the definition of > PAYMENT_TYPES: > > form.select :pay_type, > Order::PAYMENT_TYPES, > :prompt => "Select a payment method" > > then, when i run my page, it shows this error message: > > Showing store/checkout.html.erb where line #20 raised: > > undefined method `paytype'' for #<Order:0x34ba82c> > > Extracted source (around line #20): > > 17: </p> > 18: <p> > 19: <label for="order_pay_type" >Pay with:</label> > 20: <%= form.select :paytype, > 21: Order::PAYMENT_TYPES, > 22: :prompt => "Select a payment method" > %> > 23: </p> >Does your order has a field called pay_type or paytype ? The first parameter to form.select should match that. Fred --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> > Does your order has a field called pay_type or paytype ? The first > parameter to form.select should match that. > > FredNo, i followed the tutorial and it never create a field called pay_type in the Order model...i show you the Order model in the book: class Order < ActiveRecord::Base has_many :line_items PAYMENT_TYPES = [ # Displayed stored in db [ "Check" , "check" ], [ "Credit card" , "cc" ], [ "Purchase order" , "po" ] ] # ... validates_presence_of :name, :address, :email, :pay_type validates_inclusion_of :pay_type, :in => PAYMENT_TYPES.map {|disp, value| value} # ... def add_line_items_from_cart(cart) cart.items.each do |item| li = LineItem.from_cart_item(item) line_items << li end end The only things that match with pay_type is a filed in the table orders in the DB -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
On 3 Apr 2008, at 12:05, Emanuele Bastianelli wrote:> >> >> Does your order has a field called pay_type or paytype ? The first >> parameter to form.select should match that. >> >> Fred > > No, i followed the tutorial and it never create a field called > pay_type > in the Order model...i show you the Order model in the book: >You say below that you''ve got one in the orders table. that''s the same thing. Fred> class Order < ActiveRecord::Base > has_many :line_items > PAYMENT_TYPES = [ > # Displayed stored in db > [ "Check" , "check" ], > [ "Credit card" , "cc" ], > [ "Purchase order" , "po" ] > ] > # ... > validates_presence_of :name, :address, :email, :pay_type > validates_inclusion_of :pay_type, :in => PAYMENT_TYPES.map {|disp, > value| value} > # ... > def add_line_items_from_cart(cart) > cart.items.each do |item| > li = LineItem.from_cart_item(item) > line_items << li > end > end > > The only things that match with pay_type is a filed in the table > orders > in the DB > -- > Posted via http://www.ruby-forum.com/. > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Emanuele, I''m looking at AWDwRoR 2nd Ed. on page 131 (printed version), and at the top of the next page, you do create a pay_type column in the orders table (after running the migration). If you''re using form_for, your form objects must map to a model. That''s why you got the error before you had a pay_type column in your orders table. You shouldn''t have to specifically define pay_type in the model if it''s in the database. PAYMENT_TYPES should be defined in the order model as an array of arrays: PAYMENT_TYPES = [ ["Check", "check"], ["Credit Card", "cc"], ["Purchase Order", "po"]] These are merely drawn upon as the options for select - the first value is displayed in the form, and the second value is stored in the database. Do not confuse this with the pay_type column in the database. Also, as Fred pointed out, make sure that you''re consistent in your use of pay_type, not paytype or pay_types. You''ll definitely get errors if they don''t all match. -Kyle On Apr 3, 6:42 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 3 Apr 2008, at 12:05, Emanuele Bastianelli wrote: > > > > >> Does your order has a field called pay_type or paytype ? The first > >> parameter to form.select should match that. > > >> Fred > > > No, i followed the tutorial and it never create a field called > > pay_type > > in the Order model...i show you the Order model in the book: > > You say below that you''ve got one in the orders table. that''s the same > thing. > > Fred > > > class Order < ActiveRecord::Base > > has_many :line_items > > PAYMENT_TYPES = [ > > # Displayed stored in db > > [ "Check" , "check" ], > > [ "Credit card" , "cc" ], > > [ "Purchase order" , "po" ] > > ] > > # ... > > validates_presence_of :name, :address, :email, :pay_type > > validates_inclusion_of :pay_type, :in => PAYMENT_TYPES.map {|disp, > > value| value} > > # ... > > def add_line_items_from_cart(cart) > > cart.items.each do |item| > > li = LineItem.from_cart_item(item) > > line_items << li > > end > > end > > > The only things that match with pay_type is a filed in the table > > orders > > in the DB > > -- > > Posted viahttp://www.ruby-forum.com/.--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---