Hi All, I have an object called kitchen that belong to another object called house in a one to many relationship. For a new house, I collect some info in the index page and then from the internal page and every time I added it to session but when I got to the internalDetail action, I''m getting Kitchen expected, got String exception. Not also that I won''t be collecting the kitchen object actual attributes till the internalDetail page (after that action). Also I have another object inside house called (Bedroom) and that is not throwing an error. def index end def internal @house = House.new(params[:house]) session[:house] = @house end def internalDetail #@house = params[:house] @house = session[:house] #@house.attributes = params[:house] @house.update_attributes(params[:house]) session[:house] = @house end Any help is appreciated Thanks -Maged -- 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 -~----------~----~----~----~------~----~------~--~---
You should be specifying kitchen_id, not kitchen. On Fri, May 23, 2008 at 2:39 PM, Maged Makled < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Hi All, > I have an object called kitchen that belong to another object > called house in a one to many relationship. For a new house, I collect > some info in the index page and then from the internal page and every > time I added it to session but when I got to the internalDetail action, > I''m getting Kitchen expected, got String exception. Not also that I > won''t be collecting the kitchen object actual attributes till the > internalDetail page (after that action). Also I have another object > inside house called (Bedroom) and that is not throwing an error. > > > > > def index > > end > > def internal > @house = House.new(params[:house]) > session[:house] = @house > end > > def internalDetail > #@house = params[:house] > @house = session[:house] > #@house.attributes = params[:house] > @house.update_attributes(params[:house]) > session[:house] = @house > end > > > Any help is appreciated > > Thanks > > -Maged > -- > Posted via http://www.ruby-forum.com/. > > > >-- Appreciated my help? Recommend me on Working With Rails http://workingwithrails.com/person/11030-ryan-bigg --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Ryan Bigg wrote:> You should be specifying kitchen_id, not kitchen. > > On Fri, May 23, 2008 at 2:39 PM, Maged Makled < > rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote: > >> >> end >> Any help is appreciated >> >> Thanks >> >> -Maged >> -- >> Posted via http://www.ruby-forum.com/. >> >> > >> > > > -- > Appreciated my help? > Recommend me on Working With Rails > http://workingwithrails.com/person/11030-ryan-biggwhere to specify that? Thanks -Maged -- 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 -~----------~----~----~----~------~----~------~--~---
Maged Makled wrote:> Ryan Bigg wrote: >> You should be specifying kitchen_id, not kitchen. > > where to specify that? > > Thanks > -MagedI think what he means is that you form most likely is posting your kitchen variable like this: params[:house][:kitchen] #=> "123" So when you do a: House.new(params[:house]) Then when rails iterates through your params, it calls this internally: house.kitchen = "123" So house.kitchen, is an association. When assigning something to it, Rails expects a Kitchen object. But your giving it the string id of a kitchen object. This is where your error comes from. If you change your form around so that it posts like this instead: params[:house][:kitchen_id] #=> "123" Then rails internally calls: house.kitchen_id = "123" Which should hook things up just fine. Whenever you are dealing with associations, always remember that if you are playing with the id of the other object, then you need to directly access that database column that holds the foriegn id. If you are directly assigning ruby model objects, then you should can use the association methods. -- 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 -~----------~----~----~----~------~----~------~--~---
Alex Wayne wrote:> Maged Makled wrote: >> Ryan Bigg wrote: >>> You should be specifying kitchen_id, not kitchen. >> >> where to specify that? >> >> Thanks >> -Maged > > I think what he means is that you form most likely is posting your > kitchen variable like this: > > params[:house][:kitchen] #=> "123" > > So when you do a: > > House.new(params[:house]) > > Then when rails iterates through your params, it calls this internally: > > house.kitchen = "123" > > So house.kitchen, is an association. When assigning something to it, > Rails expects a Kitchen object. But your giving it the string id of a > kitchen object. This is where your error comes from. If you change > your form around so that it posts like this instead: > > params[:house][:kitchen_id] #=> "123" > > Then rails internally calls: > > house.kitchen_id = "123" > > Which should hook things up just fine. Whenever you are dealing with > associations, always remember that if you are playing with the id of the > other object, then you need to directly access that database column that > holds the foriegn id. If you are directly assigning ruby model objects, > then you should can use the association methods.Thanks for the response but one question. If my form look like this: <% form_for :house, :url => {:action => :internalDetail, :id => @house} do |form| %> in the page that go to the internalDetail action. how would I set the kitchen_id or where I get it from in order to do params[:house][:kitchen_id] #=> "123" in the form. Sorry for newbie question Thanks Maged -- 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 -~----------~----~----~----~------~----~------~--~---
Maged Makled wrote:> Alex Wayne wrote: > > Thanks for the response but one question. If my form look like this: > > <% form_for :house, :url => {:action => :internalDetail, :id => @house} > do |form| %> > > in the page that go to the internalDetail action. how would I set the > kitchen_id or where I get it from in order to do > params[:house][:kitchen_id] #=> "123" in the form. > > Sorry for newbie question > > Thanks > > MagedThats not the important part. Where is the form attribute that you select the kitchen_id with? Is it a select tag defined like: <%= form.select :kitchen, ... %> That probably needs to be: <%= form.select :kitchen_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 -~----------~----~----~----~------~----~------~--~---
Alex Wayne wrote:> Maged Makled wrote: >> Alex Wayne wrote: >> >> Thanks for the response but one question. If my form look like this: >> >> <% form_for :house, :url => {:action => :internalDetail, :id => @house} >> do |form| %> >> >> in the page that go to the internalDetail action. how would I set the >> kitchen_id or where I get it from in order to do >> params[:house][:kitchen_id] #=> "123" in the form. >> >> Sorry for newbie question >> >> Thanks >> >> Maged > > Thats not the important part. Where is the form attribute that you > select the kitchen_id with? Is it a select tag defined like: > > <%= form.select :kitchen, ... %> > > That probably needs to be: > > <%= form.select :kitchen_id, ... %>Here is my form that has the kitchen object <fieldset> <%fields_for :kitchens do |kitchen| %> <table width="100%" border="0" > <tr> <td align="right" valign="middle" class="main" nowrap="true"> Kitchen Size: </td> <td align="left" valign="middle"> <%= kitchen.text_field :size , :size => 30 %> </td> so How to do that? -- 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 -~----------~----~----~----~------~----~------~--~---