Hi: I''ve got a simple table that uses a form partial basically off of a scaffold to handle the CRUD functions for a table, let''s call this table products. I''ve got another table that has a related, but not constrained to, table of information, it''s a "tag" table. This table contains tags that the user will input when they input the product information on the the table above. The tag data is in a different table than the the product data. The tag table is just id, product_id, name & timestamp. I''ve got a partial in the view that is the products page to this tag table. It shows up fine. But how do I capture the data and post it back to the tag table? I''ve got a full controller with the standard "create" method. Any help you can provide would be appreciated! Thanks, Mike --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Hey Mike, The tables are related (see product_id). So it is Product < AR::B has_many :informations Information < AR::B belongs_to :produduct right? Do something along the lines of products_controller.rb def create @product = Product.new(params[:product] if @product.save @product.create_information(params[:information] @product.save end end Obviously you need an params[:information] hash generated in the view Therefore you might embed the following inside of your product/_form.rhtml <% fields_for :information %> <%= f.text_field :name %> <% end %> Cheers, Jan -- http://www.inviado.de - Internetseiten fr RAe http://www.xing.com/profile/Jan_Prill --~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Jan: Thank you very much for your reply. This makes a lot of sense and I totally understand why we''re doing it this way. I''m getting an error when I implement the fields_for in my parial view /products/_for. Looks like just a syntax error with the "end'' statement (I''m on rails 1.1.6), but thought you might be able to shed some light: SyntaxError in Goals#new Showing app/views/goals/_form.rhtml where line #32 raised: compile error ./script/../config/../app/views/goals/_form.rhtml:32: parse error, unexpected kEND, expecting $ What''s weird is that line 32 is the line after the last line in my file - tag heirarchy shouldn''t matter, right? I tried it in 2 places in the view and got the same result. Thank you very much again for your response. Mike On Jan 6, 5:46 pm, "Jan Prill" <JanPr...-sTn/vYlS8ieELgA04lAiVw@public.gmane.org> wrote:> Hey Mike, > > The tables are related (see product_id). > > So it is > > Product < AR::B > > has_many :informations > > Information < AR::B > > belongs_to :produduct > > right? > > Do something along the lines of > > products_controller.rb > > def create > @product = Product.new(params[:product] > if @product.save > @product.create_information(params[:information] > @product.save > end > end > > Obviously you need an params[:information] hash generated in the view > Therefore you might embed the following inside of your product/_form.rhtml > > <% fields_for :information %> > <%= f.text_field :name %> > <% end %> > > Cheers, > Jan > > -- > ------------------------------http://www.inviado.de- Internetseiten für RAehttp://www.xing.com/profile/Jan_Prill--~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hi Mike, sorry but I've got to see some of your code to tell whats going wrong. Here's a form which is untested but should work. Please refer to the api documentation for the exact usage if something goes wrong or feel free to post the code with it's corresponding errors. <% form_for :product, @product do |f| %> <%= f.text_field :name %><br/> <%= f.text_field :price %><br/> <% fields_for :information do |f| %> <%= f.text_field :name %> <% end %> <%= submit_tag 'Create' %> <% end %> Cheers, Jan -- http://www.inviado.de - Internetseiten fr RAe http://www.xing.com/profile/Jan_Prill --~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Jan: Thanks again! Actually, after some prodding, I did get it to work - turned out it needed a "fieldset" link , which I found in agile rails dev book. I''m so close, and I know the problem I''m having now is a function of being a newbie. My problem is that I can get the product id into the tags table, but for some reason the tag itself isn''t being automatically saved by rails. Here''s what I''ve got (BTW: I used "product" as the parent becuase that''s what everyone uses. In reality, it''s "goals"), here''s new & create methods from goals goals_controller.rb: def new @goal = Goal.new @goal_tag = GoalTag.new fk_timeperiod #to get fk for another field fk_goaltype #to get fk for another field end def create @goal = Goal.new(params[:goal]) @goal_tag = GoalTag.new(params[:g]) Goal.transaction do @goal_tag.goal_id = @goal @goal_tag.name = ????????? ##THIS IS WHERE THE PROBLEM IS @goal.save! @goal_tag.save! flash[:notice] = ''Goal was successfully created.'' redirect_to :action => ''show'', :id => @goal end rescue ActiveRecord::RecordInvalid => e @goal_tag.valid? # force checking of errors even if products failed render :action => :new end here''s the tags partial: (view/goal_tags/_form.rhtml) <fieldset> <legend>Tags...</legend> <p><% fields_for :goal_tags do |g|%> Enter Tags for this Goal (comma seperated)<br> <%= g.text_field :name %> <% end %></p> </fieldset> this partial is just rendered inside the "new"rhtml for the goal(former product): /views/goals/new.rhtml <h1>New goal</h1> <%= start_form_tag :action => ''create'' %> <%= render :partial => ''form'' %> <%= render :partial => ''/goal_tags/form'' %> #HERE HERE <%= submit_tag "Create" %> <%= end_form_tag %> <%= link_to ''Back'', :action => ''list'' %> Now just in case you need it, here''s the goals _form partial: <%= error_messages_for ''goal'' %> <!--[form:goal]--> <p> <label for="goal_goal_name">Goal name</label><br/> <%= text_field ''goal'', ''goal_name'' %> </p> <div class="auto_complete" id="goal_goal_name_auto_complete" ></div> <%= auto_complete_field :goal_goal_name, :url=>{:action=>''autocomplete_goal_name''}, :tokens => '','' %> <table> <tr> <td><label for="goalhist_goaltype_id">Goal Type</label></td> <td><label for="goalhist_timeperiod_id">Timeperiod</label></td> <td><label for="goal_public">Public</label></td> </tr> <tr> <td><%= collection_select ''goal'', ''goaltype_id'', @all_gt, :id, :goaltype %></p></td> <td><%= collection_select ''goal'', ''timeperiod_id'', @all_tps, :id, :name %></td> <td><select id="goal_public" name="goal[public]"><option value="false">False</option><option value="true">True</option></select></td> </tr> </table> <br> <!--[eoform:goal]--> So, as you can see from above, that is where the problem is, I can committ the goal_id but not the name of the tag itself!!! The fact that rails isn''t handlign this automatically is what prompted me to force it in the line in the create method with ????? in the controller above. What am I missing? Again, thank you so much for your help and your prompt reply! Mike On Jan 7, 11:42 am, "Jan Prill" <JanPr...-sTn/vYlS8ieELgA04lAiVw@public.gmane.org> wrote:> Hi Mike, > > sorry but I''ve got to see some of your code to tell whats going wrong. > > Here''s a form which is untested but should work. Please refer to the api > documentation for the exact usage if something goes wrong or feel free to > post the code with it''s corresponding errors. > > <% form_for :product, @product do |f| %> > <%= f.text_field :name %><br/> > <%= f.text_field :price %><br/> > <% fields_for :information do |f| %> > <%= f.text_field :name %> > <% end %> > <%= submit_tag ''Create'' %> > <% end %> > > Cheers, > Jan > > -- > ------------------------------http://www.inviado.de- Internetseiten für RAehttp://www.xing.com/profile/Jan_Prill--~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Hey mike, there are some things overcomplicated in your code. I''m right now setting up a little toy project and will send it to you by pm. You might then use this as a foundation.. Cheers, Jan -- www.inviado.de --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Jan: This stuff looks really great from what I can see. Problem is, I''m having trouble upgrading to the RC2 of rails 1.2 becuase I can''t get svn in my path correctly, or at least that''s the error i''m getting, when I try and update to the version you mentioned of rails. See this post (you''ve been so helpful, I had to ask!): http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/c4b901ecbf10dd25/0036ee5145da6996#0036ee5145da6996 Thanks again! Mike On Jan 7, 1:13 pm, "Jan Prill" <JanPr...-sTn/vYlS8ieELgA04lAiVw@public.gmane.org> wrote:> Hey mike, > > there are some things overcomplicated in your code. I''m right now setting up > a little toy project and will send it to you by pm. You might then use this > as a foundation.. > > Cheers, > Jan > > --www.inviado.de--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Jan: nevermind. I got it to work. This stuff looks pretty cool. I did a bunch of other work already so I''m going to try and integrate it. But at least i got to upgrade. Also I''m goign to need to look into routes - there''s some stuff in here that''s different - a lot of XML or something? mike On Jan 9, 8:57 pm, "Miked" <mike.dershow...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Jan: > > This stuff looks really great from what I can see. Problem is, I''m > having trouble upgrading to the RC2 of rails 1.2 becuase I can''t get > svn in my path correctly, or at least that''s the error i''m getting, > when I try and update to the version you mentioned of rails. See this > post (you''ve been so helpful, I had to ask!): > > http://groups.google.com/group/rubyonrails-talk/browse_thread/thread/... > > Thanks again! > > Mike > > On Jan 7, 1:13 pm, "Jan Prill" <JanPr...-sTn/vYlS8ieELgA04lAiVw@public.gmane.org> wrote: > > > Hey mike, > > > there are some things overcomplicated in your code. I''m right now setting up > > a little toy project and will send it to you by pm. You might then use this > > as a foundation.. > > > Cheers, > > Jan > > > --www.inviado.de--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Hi Mike, no there shouldn't be any xml. But the config/routes.rb is essential for this sexy new restful style of rails. Get a grip by searching for something like 'restful' 'edge' 'rails' on google. Have fun. Cheers, Jan -- –––––––––––––––––––––––––––––– http://www.inviado.de - Internetseiten für RAe http://www.xing.com/profile/Jan_Prill --~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Jan: This was great. Got it working and I''m just amazed at all rails offers, the more i work with it. Here''s a quick question for you. From the goals_controller.rb that you sent, I don''t quite understand this line: tags.each {|tag| @goal.tags << Tag.find_or_create_by_name(tag)} in the create method. I sort of understand it at the high level, but can you explain a little better? Thanks so much in advance! Mike On Jan 10, 3:54 am, "Jan Prill" <JanPr...-sTn/vYlS8ieELgA04lAiVw@public.gmane.org> wrote:> Hi Mike, > > no there shouldn''t be any xml. But the config/routes.rb is essential for > this sexy new restful style of rails. Get a grip by searching for something > like ''restful'' ''edge'' ''rails'' on google. > > Have fun. > > Cheers, > Jan > > -- > ------------------------------http://www.inviado.de- Internetseiten für RAehttp://www.xing.com/profile/Jan_Prill--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Hi Mike, when you use tags you want to be able to normalize them. I'll explain by example: You've got your models goals <-> tagging <-> tags Now let's assume: user1 creates a new @goal1, writes up his description and tags it with: "Ronaldinho wonderful Champions League" user2 creates another @goal2, writes up his description and tags it with: "Ronaldo asshat Champions League" The tag-strings are split up to: Ronaldinho wonderful Champions (2x) League (2x) Ronaldo asshat They now should get associated with their respective goals therefore we'll iterate over the list of split up tags of each goal @goal1.tags << Ronaldinho @goal1.tags << wonderful and so on on goal2 it now happens that 'Champions' and 'League' are already in the tags-table so the don't get created but found and associated with @goal2 (as well as the were already associated with @goal1 in their creation step). Because of this normalization @tag = Tag.find_by_name('Champions') @tag.goals should give you an array of two goals (@goal1 and @goal2) Cheers, Jan On 1/10/07, Miked <mike.dershowitz@gmail.com> wrote:> > > Jan: > > This was great. Got it working and I'm just amazed at all rails > offers, the more i work with it. > > Here's a quick question for you. From the goals_controller.rb that you > sent, I don't quite understand this line: > > tags.each {|tag| @goal.tags << Tag.find_or_create_by_name(tag)} > > in the create method. I sort of understand it at the high level, but > can you explain a little better? > > Thanks so much in advance! > > Mike > > On Jan 10, 3:54 am, "Jan Prill" <JanPr...@blauton.de> wrote: > > Hi Mike, > > > > no there shouldn't be any xml. But the config/routes.rb is essential for > > this sexy new restful style of rails. Get a grip by searching for > something > > like 'restful' 'edge' 'rails' on google. > > > > Have fun. > > > > Cheers, > > Jan > > > > -- > > ------------------------------http://www.inviado.de- Internetseiten für > RAehttp://www.xing.com/profile/Jan_Prill > > > > >-- –––––––––––––––––––––––––––––– http://www.inviado.de - Internetseiten für RAe http://www.xing.com/profile/Jan_Prill --~--~---------~--~----~------------~-------~--~----~ 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@googlegroups.com To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---