I can''t get my error messages to display. Maybe I don''t yet understand page life cycle or something? ROR is an elegant solution but the transition from ASP.net has been painful to say the least. Code below any help would be greatly appreciated. <% form_for :inventory_line_item, :url => { :action => :create_inventory_item, :id =>@product } do |form| %> <%= error_messages_for ''inventory_line_item'' %> <ol> <li> <label for="inventory_line_item_quantity">Quantity</label> <%= form.text_field ''quantity'' %> </li> Model class InventoryLineItem < ActiveRecord::Base belongs_to :products validates_presence_of :date_added, :added_by, :quantity, :unit_case, :case_price validates_numericality_of :case_price, :message=>"Price must be a valid decimal number" protected def validate errors.add(:case_price, "should be at lease 0.01") if case_price.nil? || case_price < 0.01 end end controller def inventory @product = Product.find(params[:id]) @inventory_line_item = InventoryLineItem.new end def create_inventory_item member = Member.find(session[:member_id]) @product = Product.find(params[:id]) line_item InventoryLineItem.new(params[:inventory_line_item]) line_item.date_added = Date.today line_item.added_by = member.name @product.inventory_line_items << line_item if @product.save flash[:notice] = ''Inventory successfully added'' redirect_to :action => ''inventory'', :id => @product end redirect_to :action => ''inventory'', :id => @product end --~--~---------~--~----~------------~-------~--~----~ 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 2/20/07, jake <jakeschirm-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > > I can''t get my error messages to display. Maybe I don''t yet understand > page life cycle or something? ROR is an elegant solution but the > transition from ASP.net has been painful to say the least. Code below > any help would be greatly appreciated. > > <% form_for :inventory_line_item, :url => { :action > => :create_inventory_item, :id =>@product } do |form| %> > <%= error_messages_for ''inventory_line_item'' %>This line requires that you have the instance variable @inventory_line_item set and containing the object that you are interested in. <ol>> <li> > <label for="inventory_line_item_quantity">Quantity</label> > <%= form.text_field ''quantity'' %> > </li> > > > Model > > class InventoryLineItem < ActiveRecord::Base > belongs_to :products > > > validates_presence_of :date_added, :added_by, :quantity, :unit_case, > :case_price > validates_numericality_of :case_price, :message=>"Price must be a > valid decimal number" > > protected > def validate > errors.add(:case_price, "should be at lease 0.01") if > case_price.nil? || case_price < 0.01 > end > > > end > > controller > > def inventory > @product = Product.find(params[:id]) > @inventory_line_item = InventoryLineItem.new > end > > def create_inventory_item > member = Member.find(session[:member_id]) > > @product = Product.find(params[:id]) > line_item > InventoryLineItem.new(params[:inventory_line_item]) > line_item.date_added = Date.today > line_item.added_by = member.name > @product.inventory_line_items << line_item > > if @product.save > flash[:notice] = ''Inventory successfully added'' > redirect_to :action => ''inventory'', :id => @product > end > redirect_to :action => ''inventory'', :id => @product > endline_item in the create action should be @inventory_line_item This should then see it --~--~---------~--~----~------------~-------~--~----~ 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 follow your logic, if I am using the instance variable it will not get passed back to the page. I made the following change but am still not getting any error messaging? Could it be because I am using @product.save with <%error_messages_for ''inventory_line_item'' %> or could it be that I am instantiating and new inventory_line_item in inventory? Maybe the errors are not bubbling up or something. I am confused for sure on this one. #inventory controls def inventory @product = Product.find(params[:id]) @inventory_line_item = InventoryLineItem.new end def create_inventory_item member = Member.find(session[:member_id]) @product = Product.find(params[:id]) @inventory_line_item InventoryLineItem.new(params[:inventory_line_item]) @inventory_line_item.date_added = Date.today @inventory_line_item.added_by = member.name @product.inventory_line_items << @inventory_line_item if @product.save flash[:notice] = ''Inventory successfully added'' end redirect_to :action => ''inventory'', :id => @product end On Feb 19, 9:38 pm, "Daniel N" <has....-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 2/20/07, jake <jakesch...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > I can''t get my error messages to display. Maybe I don''t yet understand > > page life cycle or something? ROR is an elegant solution but the > > transition from ASP.net has been painful to say the least. Code below > > any help would be greatly appreciated. > > > <% form_for :inventory_line_item, :url => { :action > > => :create_inventory_item, :id =>@product } do |form| %> > > <%= error_messages_for ''inventory_line_item'' %> > > This line requires that you have the instance variable @inventory_line_item > set and containing the object that you are interested in. > > <ol> > > > > > <li> > > <label for="inventory_line_item_quantity">Quantity</label> > > <%= form.text_field ''quantity'' %> > > </li> > > > Model > > > class InventoryLineItem < ActiveRecord::Base > > belongs_to :products > > > validates_presence_of :date_added, :added_by, :quantity, :unit_case, > > :case_price > > validates_numericality_of :case_price, :message=>"Price must be a > > valid decimal number" > > > protected > > def validate > > errors.add(:case_price, "should be at lease 0.01") if > > case_price.nil? || case_price < 0.01 > > end > > > end > > > controller > > > def inventory > > @product = Product.find(params[:id]) > > @inventory_line_item = InventoryLineItem.new > > end > > > def create_inventory_item > > member = Member.find(session[:member_id]) > > > @product = Product.find(params[:id]) > > line_item > > InventoryLineItem.new(params[:inventory_line_item]) > > line_item.date_added = Date.today > > line_item.added_by = member.name > > @product.inventory_line_items << line_item > > > if @product.save > > flash[:notice] = ''Inventory successfully added'' > > redirect_to :action => ''inventory'', :id => @product > > end > > redirect_to :action => ''inventory'', :id => @product > > end > > line_item in the create action should be > @inventory_line_item > > This should then see it--~--~---------~--~----~------------~-------~--~----~ 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 2/20/07, jake <jakeschirm-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> > I follow your logic, if I am using the instance variable it will not > get passed back to the page. >That''s not quite it. The error_messages_for method looks for an instance variable with the name given in the argument. In the docs Returns a string with a div containing all of the error messages for the objects located as instance variables by the names given. If more than one object is specified, the errors for the objects are displayed in the order that the object names are provided. http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#M000603> I made the following change but am still not getting any error > messaging? Could it be because I am using @product.save with <%> error_messages_for ''inventory_line_item'' %> or could it be that I am > instantiating and new inventory_line_item in inventory? Maybe the > errors are not bubbling up or something. I am confused for sure on > this one. >I believe the problem is that you are not saving @inventory_line_item or at least calling the validation, and it is not saving as part of the @product.save. You will need to at least run the valid? method on the @inventory_line_item or make sure that an attempt has been made to save it. Hope that helps. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
Thanks Daniel, Below is the code that fixed this issue. I had to check the valid method first like you said and the key to making the validation display was using the render action: => to redisplay the page like this. When you redirect_to do you loose the state of the error_message_for? I will need to read up on that. Thanks againf for your help. @inventory_line_item.added_by = member.name if @inventory_line_item.valid? @product.inventory_line_items << @inventory_line_item if @product.save flash[:notice] = ''Inventory successfully added'' redirect_to :action => ''list'' end else render :action => :inventory end On Feb 19, 11:10 pm, "Daniel N" <has....-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 2/20/07, jake <jakesch...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > I follow your logic, if I am using the instance variable it will not > > get passed back to the page. > > That''s not quite it. The error_messages_for method looks for an > instance variable with the name given in the argument. > > In the docs > > Returns a string with a div containing all of the error messages for > the objects located as instance variables by the names given. If more > than one object is specified, the errors for the objects are displayed > in the order that the object names are provided. > > http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.h... > > > I made the following change but am still not getting any error > > messaging? Could it be because I am using @product.save with <%> > error_messages_for ''inventory_line_item'' %> or could it be that I am > > instantiating and new inventory_line_item in inventory? Maybe the > > errors are not bubbling up or something. I am confused for sure on > > this one. > > I believe the problem is that you are not saving @inventory_line_item > or at least calling the validation, and it is not saving as part of > the @product.save. > > You will need to at least run the valid? method on the > @inventory_line_item or make sure that an attempt has been made to > save it. > > Hope that helps.--~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---