Hi all, finally im starting with rails, i have a simple relationship has_many ans belongs_to that i dont now how to manage the update action, here are my models class Item < ActiveRecord::Base has_many :images end class Image < ActiveRecord::Base belongs_to :item end And my table structure: Items => id, title, desc Images => id, image, item_id ok, i have a number of items and each item has an image assigned, i can display the item info and its assigned image with <% for image in @item.images %> <%= image_tag("/images/publicas/" + image.image) %> <% end %> thats not a problem, the problem comes when i want to update the item, i cant find a way to update its image too, im trying to fill a combobox(in fact to fill the combo there?s no problem) in the edit.rhtml view so i can choose wich image assign to the item and when i click the edit button it be saved on the controller but i cant figure it out how pass the image/id parameters. Hope you can help me with this, Please be gentle im still learning :( -- Posted via http://www.ruby-forum.com/.
Anyone? i have really tried to achieve this but i just cant figure it out how to make it work. -- Posted via http://www.ruby-forum.com/.
Hi Nhila, I am also learning Rails and are trying to do similar things as you (if I understand your situation correctly.) What I did is store the parameters I needed in session like session[:image_id] If you find a better way, please let me know :) Victor -- Posted via http://www.ruby-forum.com/.
Okay, so if I get it right, you have items, each of them having many images. Now, you simply want to associate the images to each item. You can use different controls for that, including the combo box, which I will briefy describe. You view could look like that (that''s an image you are editing, and you will choose which item it belongs to. Editing an item would rather require a "check box control"): <%= @items= Item.find(:all) collection_select(:image, :item_id, @items, :id, :item) %> now, in you view, you have params[:image] which contains a hash like: "image"=>{"name"=>"my image name", "item_id"=>"12"} if you have setup your form as usual, you should also have params[:id] = id of your image Therefore, in you controller, you can update like: image = Image.find(params[:id]) if image.update_attributes(params[:image]) redirect in case of success else render form in case of failure end Hope this helps. Regards, Nicolas That should create a combo box where the names of the On 5/29/06, Victor Fan <vlkfan@yahoo.ca> wrote:> Hi Nhila, > > I am also learning Rails and are trying to do similar things as you (if > I understand your situation correctly.) What I did is store the > parameters I needed in session like > > session[:image_id] > > If you find a better way, please let me know :) > > Victor > > -- > Posted via http://www.ruby-forum.com/ . > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060530/e6eb8d82/attachment.html
I should really read what I write before sending: "now, in you view, you have params[:image] which contains a hash like..": of course, it''s not in your view, but in in your controller. On 5/30/06, Nicolas Buet <nicolas.buet@gmail.com> wrote:> > Okay, so if I get it right, you have items, each of them having many > images. > > Now, you simply want to associate the images to each item. You can use > different controls for that, including the combo box, which I will briefy > describe. > > You view could look like that (that''s an image you are editing, and you > will choose which item it belongs to. Editing an item would rather require a > "check box control"): > > <%= @items= Item.find(:all) > collection_select(:image, :item_id, @items, :id, :item) > %> > > now, in you view, you have params[:image] which contains a hash like: > "image"=>{"name"=>"my image name", "item_id"=>"12"} > if you have setup your form as usual, you should also have params[:id] > id of your image > > Therefore, in you controller, you can update like: > image = Image.find(params[:id]) > if image.update_attributes(params[:image]) > redirect in case of success > else > render form in case of failure > end > > Hope this helps. > > Regards, > > Nicolas > > That should create a combo box where the names of the > > On 5/29/06, Victor Fan <vlkfan@yahoo.ca> wrote: > > > Hi Nhila, > > > > I am also learning Rails and are trying to do similar things as you (if > > I understand your situation correctly.) What I did is store the > > parameters I needed in session like > > > > session[:image_id] > > > > If you find a better way, please let me know :) > > > > Victor > > > > -- > > Posted via http://www.ruby-forum.com/ . > > _______________________________________________ > > Rails mailing list > > Rails@lists.rubyonrails.org > > http://lists.rubyonrails.org/mailman/listinfo/rails > > > >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://wrath.rubyonrails.org/pipermail/rails/attachments/20060530/a7c3d7a8/attachment.html