Hi, I have a view that displays a list of items from a database table called "order_items". Each item has a checkbox next to it. I need the user to be able to select multiple items with the checkboxes and have those items update another database table called "line_items". Whenever I save the form, in the "line_item_id" column of the "order_item_id" table I keep seeing stuff like "-615326988", which is obviously incorrect. What is that weird negative number? Why does it put that instead of what I need? Below is what I''m working with so far... Controller: [CODE] def create @order = Order.new(params[:order]) @lineitem = LineItem.new(params[:line_item]) @orderitem = OrderItem.find(:all) if @order.save @lineitem.order_id = @order.id @lineitem.order_item_id = @orderitem.id if @lineitem.save LineItem.update_all(["issued_date=?", Time.now], :id => params[:orderitem_ids]) redirect_to :controller=> ''orders'', :action => ''viewAllOrders'' else flash[:warning] = "Error - orders controller - @lineitem not saved." end else flash[:warning] = "Error - orders controller - @order not saved." end end[/CODE] View: [CODE] <% form_tag({:action => ''create''}, {:id=> ''page1''}) do %> <% @orderitem.each do |orderitem| %> <%= check_box_tag "orderitem_ids[]", orderitem.id %> <%= orderitem.name %> <% end %> <% end %>[/CODE] Output: Processing OrdersController#create (for 127.0.0.1 at 2007-12-26 12:07:42) [POST] Session ID: 57faab505a5f2807583b841df5d58534 Parameters: {"commit"=>"Create", "order"=>{"location_id"=>"3"}, "action"=>"create", "controller"=>"orders", "orderitem_ids"=>["1", "3"], "line_item"=>{"quantity_requested"=>"4"}} SQL (0.000104) BEGIN SQL (0.043289) INSERT INTO line_items (`order_id`, `order_item_id`, `quantity_requested`, `issued_date`, `price_at_order`, `parlevel`, `quantity_issued`) VALUES(80, -615326988, 4, NULL, NULL, NULL, NULL) SQL (0.001171) COMMIT LineItem Update (0.000302) UPDATE line_items SET issued_date=''2007-12-26 12:07:42'' WHERE (line_items.`id` IN (''1'',''3'')) Generated Page Source: <input id="orderitem_ids[]" name="orderitem_ids[]" type="checkbox" value="1" /> Item X <input class="validate-digits" id="line_item_quantity_requested" name="line_item[quantity_requested]" type="text" /> -- 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 -~----------~----~----~----~------~----~------~--~---
I don''t understand your code very well, but i think that you need something like this: http://wiki.rubyonrails.org/rails/pages/CheckboxHABTM The answer about the negative id is on:>> @orderitem = OrderItem.find(:all)...>> @lineitem.order_item_id = @orderitem.id@orderitem is an Array! On Dec 26, 2007 3:31 PM, Mr. Bill <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Hi, > I have a view that displays a list of items from a database table called > "order_items". Each item has a checkbox next to it. I need the user to > be able to select multiple items with the checkboxes and have those > items update another database table called "line_items". Whenever I save > the form, in the "line_item_id" column of the "order_item_id" table I > keep seeing stuff like "-615326988", which is obviously incorrect. What > is that weird negative number? Why does it put that instead of what I > need? > Below is what I''m working with so far... > > Controller: > [CODE] > def create > @order = Order.new(params[:order]) > @lineitem = LineItem.new(params[:line_item]) > @orderitem = OrderItem.find(:all) > > if @order.save > @lineitem.order_id = @order.id > @lineitem.order_item_id = @orderitem.id > if @lineitem.save > LineItem.update_all(["issued_date=?", Time.now], :id => > params[:orderitem_ids]) > redirect_to :controller=> ''orders'', :action => ''viewAllOrders'' > else > flash[:warning] = "Error - orders controller - @lineitem not > saved." > end > else > flash[:warning] = "Error - orders controller - @order not saved." > end > end[/CODE] > > View: > [CODE] > <% form_tag({:action => ''create''}, {:id=> ''page1''}) do %> > <% @orderitem.each do |orderitem| %> > <%= check_box_tag "orderitem_ids[]", orderitem.id %> > <%= orderitem.name %> > <% end %> > <% end %>[/CODE] > > Output: > > Processing OrdersController#create (for 127.0.0.1 at 2007-12-26 > 12:07:42) [POST] > Session ID: 57faab505a5f2807583b841df5d58534 > Parameters: {"commit"=>"Create", "order"=>{"location_id"=>"3"}, > "action"=>"create", "controller"=>"orders", "orderitem_ids"=>["1", "3"], > "line_item"=>{"quantity_requested"=>"4"}} > > SQL (0.000104) BEGIN > SQL (0.043289) INSERT INTO line_items (`order_id`, `order_item_id`, > `quantity_requested`, `issued_date`, `price_at_order`, `parlevel`, > `quantity_issued`) VALUES(80, -615326988, 4, NULL, NULL, NULL, NULL) > SQL (0.001171) COMMIT > LineItem Update (0.000302) UPDATE line_items SET > issued_date=''2007-12-26 12:07:42'' WHERE (line_items.`id` IN (''1'',''3'')) > > Generated Page Source: > > <input id="orderitem_ids[]" name="orderitem_ids[]" type="checkbox" > value="1" /> > Item X > <input class="validate-digits" id="line_item_quantity_requested" > name="line_item[quantity_requested]" type="text" /> > -- > Posted via http://www.ruby-forum.com/. > > > >-- Everton J. Carpes Mobile: +55 53 9129.4593 MSN: maskejc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org UIN: 343716195 Jabber: everton.carpes-/eSpBmjxGS4dnm+yROfE0A@public.gmane.org "If art interprets our dreams, the computer executes them in the guise of programs!" - Alan J. Perlis --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Thank you for your reply Everton. I will look into HABTM and HABTM checkboxes. I''m still confused about the negative id. Everything I try either produces the same result or makes the order_item_id NULL. Can you give a hint on what I should be adding/subtracting from the code? What should @orderitem be instead of an array?> The answer about the negative id is on: >>> @orderitem = OrderItem.find(:all) > ... >>> @lineitem.order_item_id = @orderitem.id > > @orderitem is an Array!-- 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 Wed, 26 Dec 2007 20:15:00 +0100, Mr. Bill wrote:> Thank you for your reply Everton. I will look into HABTM and HABTM > checkboxes.Has many through gives more flexibility, no? -Thufir --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
I think that what you need is just a checkbox like: <%= check_box_tag "line_item[orderitem_ids][]", orderitem.id %> And so, @lineitem = LineItem.new(params[:line_item]) @lineitem.save will works fine! P.S.: the problem about the negative Array id, is because the Array id is the Ruby object id, not an ActiveRecord id. On Dec 26, 2007 5:15 PM, Mr. Bill <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Thank you for your reply Everton. I will look into HABTM and HABTM > checkboxes. > > I''m still confused about the negative id. Everything I try either > produces the same result or makes the order_item_id NULL. Can you give a > hint on what I should be adding/subtracting from the code? What should > @orderitem be instead of an array? > > > > The answer about the negative id is on: > >>> @orderitem = OrderItem.find(:all) > > ... > >>> @lineitem.order_item_id = @orderitem.id > > > > @orderitem is an Array! > -- > Posted via http://www.ruby-forum.com/. > > > >-- Everton J. Carpes Mobile: +55 53 9129.4593 MSN: maskejc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org UIN: 343716195 Jabber: everton.carpes-/eSpBmjxGS4dnm+yROfE0A@public.gmane.org "If art interprets our dreams, the computer executes them in the guise of programs!" - Alan J. Perlis --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
OK, when I try <%= check_box_tag "line_item[orderitem_ids][]", orderitem.id %> it shows the error: "NoMethodError in OrdersController#create undefined method `orderitem_ids='' for #<LineItem:0xb69024e4>" When I try <%= check_box_tag "line_item[orderitem_ids][]" it shows: "ActiveRecord::StatementInvalid in OrdersController#create Mysql::Error: Table ''databasename.line_items_order_items'' doesn''t exist: SHOW FIELDS FROM line_items_order_items" Yes, Thufir, HABTM looks very promising. I haven''t had much time to look into it yet though. Everton J. Carpes wrote:> I think that what you need is just a checkbox like: > > <%= check_box_tag "line_item[orderitem_ids][]", orderitem.id %> > > And so, > > @lineitem = LineItem.new(params[:line_item]) > @lineitem.save > > will works fine! > > P.S.: the problem about the negative Array id, is because the Array id > is > the Ruby object id, not an ActiveRecord id. >-- 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 -~----------~----~----~----~------~----~------~--~---
Thufir:>> Has many through gives more flexibility, no?Yes, in this case through is the best solution, but the problem about creation will be solved at the some way. Mr. Bill: Post your models''s source. On Dec 26, 2007 6:17 PM, Mr. Bill <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > OK, when I try > > <%= check_box_tag "line_item[orderitem_ids][]", orderitem.id %> > > it shows the error: > > "NoMethodError in OrdersController#create > > undefined method `orderitem_ids='' for #<LineItem:0xb69024e4>" > > When I try > > <%= check_box_tag "line_item[orderitem_ids][]" > > it shows: > > "ActiveRecord::StatementInvalid in OrdersController#create > > Mysql::Error: Table ''databasename.line_items_order_items'' doesn''t exist: > SHOW FIELDS FROM line_items_order_items" > > > Yes, Thufir, HABTM looks very promising. I haven''t had much time to look > into it yet though. > > > Everton J. Carpes wrote: > > I think that what you need is just a checkbox like: > > > > <%= check_box_tag "line_item[orderitem_ids][]", orderitem.id %> > > > > And so, > > > > @lineitem = LineItem.new(params[:line_item]) > > @lineitem.save > > > > will works fine! > > > > P.S.: the problem about the negative Array id, is because the Array id > > is > > the Ruby object id, not an ActiveRecord id. > > > > -- > Posted via http://www.ruby-forum.com/. > > > >-- Everton J. Carpes Mobile: +55 53 9129.4593 MSN: maskejc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org UIN: 343716195 Jabber: everton.carpes-/eSpBmjxGS4dnm+yROfE0A@public.gmane.org "If art interprets our dreams, the computer executes them in the guise of programs!" - Alan J. Perlis --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Everton J. Carpes wrote:> Mr. Bill: > > Post your models''s source.Here are the models I''m working with: class Order < ActiveRecord::Base has_many :order_items has_many :line_items end class OrderItem < ActiveRecord::Base #Order Items are the various available items that can be placed in an order belongs_to :order def self.find_items find(:all) end end class LineItem < ActiveRecord::Base #this model represents one line entry in a given order belongs_to :order has_many :order_items end -- 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 -~----------~----~----~----~------~----~------~--~---
Your OrderItem model has not the belongs_to :line_items, but this is not the problem. I can''t understand why method missing, because you have has_many :order_items... Well, sory, but i can''t help more. On Dec 27, 2007 12:15 AM, Mr. Bill <rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Everton J. Carpes wrote: > > > Mr. Bill: > > > > Post your models''s source. > > Here are the models I''m working with: > > class Order < ActiveRecord::Base > has_many :order_items > has_many :line_items > end > > > class OrderItem < ActiveRecord::Base > #Order Items are the various available items that can be placed in an > order > belongs_to :order > > def self.find_items > find(:all) > end > end > > > class LineItem < ActiveRecord::Base > #this model represents one line entry in a given order > belongs_to :order > has_many :order_items > end > > > -- > Posted via http://www.ruby-forum.com/. > > > >-- Everton J. Carpes Mobile: +55 53 9129.4593 MSN: maskejc-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org UIN: 343716195 Jabber: everton.carpes-/eSpBmjxGS4dnm+yROfE0A@public.gmane.org "If art interprets our dreams, the computer executes them in the guise of programs!" - Alan J. Perlis --~--~---------~--~----~------------~-------~--~----~ 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 Dec 26, 6:15 pm, "Mr. Bill" <rails-mailing-l...-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> Everton J. Carpes wrote: > > Mr. Bill: > > > Post your models''s source. > > Here are the models I''m working with: > > class Order < ActiveRecord::Base > has_many :order_items > has_many :line_items > end > > class OrderItem < ActiveRecord::Base > #Order Items are the various available items that can be placed in an > order > belongs_to :order > > def self.find_items > find(:all) > end > end > > class LineItem < ActiveRecord::Base > #this model represents one line entry in a given order > belongs_to :order > has_many :order_items > endFor a HABTM (Has and Belongs To Many) I believe that you need to change the names for tables and classes. It seems contentious, but to my understanding it would be: class Order class Item class ItemOrder corresponding to: table orders table items table items_orders or, perhaps it''s item_orders, or order_items for the table name. That part seems contentious. Oh, I find "item" to be kinda vague as it could be any kind of item. How about "dish", "entree" or "food"? -Thufir --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
items_orders is correct, as HABTM join tables need to be in alphabetical order. Well, apparently. I''ve never tried putting it out of order. -- Ryan Bigg http://www.frozenplague.net Feel free to add me to MSN and/or GTalk as this email. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---