Hi! I have created a nested form and now I want to make it dynamic. I have two models, "Applications" and "Participants". Each application may have several participants, but at least one which is the contact person. An issue that I have is that when the form is not validated it renders the participants fields twice. - How can I avoid that? # Applications/new.html.erb <div class="row span8 offset2 form-wrapper"> <h1>Ny anmälan</h1> <%= semantic_form_for @application, :html => { :class => "form-horizontal" } do |f| %> <%= f.semantic_errors %> <%= f.inputs do %> <%= f.inputs :for => :participants, :name => "Kontaktperson", :class => "participants_form well" do |p| %> <%= p.input :name, :label => "Namn", :required => true %> <%= p.input :address, :label => "Adress", :required => true %> <%= p.input :phone, :label => "Mobiltelefon", :required => true %> <%= p.input :email, :label => "Epostadress", :as => :email, :required => true %> <%= p.input :age, :label => "Ålder" %> <%= p.input :has_something, :label => "Ja..." %> <%= p.input :special_food, :label => "Annan specialkost" %> <%= p.input :is_contact, :as => :hidden, :value => true %> <% end %> <%= f.inputs :class => "participants_fields" do %> <%= render "participant_form", :f => f %> <% end %> <%= link_to "<i class=\"icon-plus-sign\"> </i> Lägg till fler deltagare...".html_safe, "#", :class => "btn pull-right" %> <%= f.inputs :name => "Övrig information" do %> <%= f.input :extra_information, :input_html => { :class => "span4", :rows => 3 } %> <%= f.input :membership_paid, :label => "JA" %> <% end %> <% end %> <%= f.buttons do %> <%= f.submit :value => "Skicka anmälan", :class => "btn btn-primary btn-large commit create" %> <% end %> <% end %> </div> # Applications Controller def new @application = Application.new @application.participants.build respond_to do |format| format.html format.js { render :nothing } end end def create @application = Application.new(params[:application]) if @application.save flash[:notice] = "Din anmälan har skickats!" redirect_to root_path else flash[:error] = "Det gick inte att spara din anmälan" render :action => "new" end end I guess that my participants gets built again when it renders the new action in the "create" method. But how can I avoid that? -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/ihqbWCmIL0YJ. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
is there a way to check if the participant field is already created before creating it? Is_A and Has_A relationships. Describe the relationship between the forms On 4 April 2012 14:42, Linus Pettersson <linus.pettersson-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hi! > > I have created a nested form and now I want to make it dynamic. I have two > models, "Applications" and "Participants". Each application may have > several participants, but at least one which is the contact person. An > issue that I have is that when the form is not validated it renders the > participants fields twice. > > - How can I avoid that? > > # Applications/new.html.erb > <div class="row span8 offset2 form-wrapper"> > <h1>Ny anmälan</h1> > > <%= semantic_form_for @application, :html => { :class => "form-horizontal" > } do |f| %> > <%= f.semantic_errors %> > <%= f.inputs do %> > <%= f.inputs :for => :participants, :name => "Kontaktperson", :class => > "participants_form well" do |p| %> > <%= p.input :name, :label => "Namn", :required => true %> > <%= p.input :address, :label => "Adress", :required => true %> > <%= p.input :phone, :label => "Mobiltelefon", :required => true %> > <%= p.input :email, :label => "Epostadress", :as => :email, :required => > true %> > <%= p.input :age, :label => "Ålder" %> > <%= p.input :has_something, :label => "Ja..." %> > <%= p.input :special_food, :label => "Annan specialkost" %> > <%= p.input :is_contact, :as => :hidden, :value => true %> > <% end %> > > <%= f.inputs :class => "participants_fields" do %> > <%= render "participant_form", :f => f %> > <% end %> > <%= link_to "<i class=\"icon-plus-sign\"> </i> Lägg till fler > deltagare...".html_safe, "#", :class => "btn pull-right" %> > > <%= f.inputs :name => "Övrig information" do %> > <%= f.input :extra_information, :input_html => { :class => "span4", :rows > => 3 } %> > <%= f.input :membership_paid, :label => "JA" %> > <% end %> > <% end %> > > <%= f.buttons do %> > <%= f.submit :value => "Skicka anmälan", :class => "btn btn-primary > btn-large commit create" %> > <% end %> > <% end %> > </div> > > # Applications Controller > def new > @application = Application.new > @application.participants.build > respond_to do |format| > format.html > format.js { render :nothing } > end > end > > def create > @application = Application.new(params[:application]) > > if @application.save > flash[:notice] = "Din anmälan har skickats!" > redirect_to root_path > else > flash[:error] = "Det gick inte att spara din anmälan" > render :action => "new" > end > end > > > I guess that my participants gets built again when it renders the new > action in the "create" method. But how can I avoid that? > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/ihqbWCmIL0YJ. > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
I don''t quite understand what you mean. Do you understand my problem? When the user enters the information into the form correctly and it validates everything works great. However, if it is not correctly filled out the "new" action will get re-rendered and displaying the form errors. The issue is that instead of showing 2 Participant "fields groups" it now displays 4, using the code above. Den onsdagen den 4:e april 2012 kl. 20:55:43 UTC+2 skrev Charles:> > is there a way to check if the participant field is already created before > creating it? > > Is_A and Has_A relationships. Describe the relationship between the forms > > > On 4 April 2012 14:42, Linus Pettersson <> wrote: > >> Hi! >> >> I have created a nested form and now I want to make it dynamic. I have >> two models, "Applications" and "Participants". Each application may have >> several participants, but at least one which is the contact person. An >> issue that I have is that when the form is not validated it renders the >> participants fields twice. >> >> - How can I avoid that? >> >> # Applications/new.html.erb >> <div class="row span8 offset2 form-wrapper"> >> <h1>Ny anmälan</h1> >> >> <%= semantic_form_for @application, :html => { :class => >> "form-horizontal" } do |f| %> >> <%= f.semantic_errors %> >> <%= f.inputs do %> >> <%= f.inputs :for => :participants, :name => "Kontaktperson", :class => >> "participants_form well" do |p| %> >> <%= p.input :name, :label => "Namn", :required => true %> >> <%= p.input :address, :label => "Adress", :required => true %> >> <%= p.input :phone, :label => "Mobiltelefon", :required => true %> >> <%= p.input :email, :label => "Epostadress", :as => :email, :required => >> true %> >> <%= p.input :age, :label => "Ålder" %> >> <%= p.input :has_something, :label => "Ja..." %> >> <%= p.input :special_food, :label => "Annan specialkost" %> >> <%= p.input :is_contact, :as => :hidden, :value => true %> >> <% end %> >> >> <%= f.inputs :class => "participants_fields" do %> >> <%= render "participant_form", :f => f %> >> <% end %> >> <%= link_to "<i class=\"icon-plus-sign\"> </i> Lägg till fler >> deltagare...".html_safe, "#", :class => "btn pull-right" %> >> >> <%= f.inputs :name => "Övrig information" do %> >> <%= f.input :extra_information, :input_html => { :class => "span4", :rows >> => 3 } %> >> <%= f.input :membership_paid, :label => "JA" %> >> <% end %> >> <% end %> >> >> <%= f.buttons do %> >> <%= f.submit :value => "Skicka anmälan", :class => "btn btn-primary >> btn-large commit create" %> >> <% end %> >> <% end %> >> </div> >> >> # Applications Controller >> def new >> @application = Application.new >> @application.participants.build >> respond_to do |format| >> format.html >> format.js { render :nothing } >> end >> end >> >> def create >> @application = Application.new(params[:application]) >> >> if @application.save >> flash[:notice] = "Din anmälan har skickats!" >> redirect_to root_path >> else >> flash[:error] = "Det gick inte att spara din anmälan" >> render :action => "new" >> end >> end >> >> >> I guess that my participants gets built again when it renders the new >> action in the "create" method. But how can I avoid that? >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Ruby on Rails: Talk" group. >> To view this discussion on the web visit >> https://groups.google.com/d/msg/rubyonrails-talk/-/ihqbWCmIL0YJ. >> To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >> To unsubscribe from this group, send email to >> rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org >> For more options, visit this group at >> http://groups.google.com/group/rubyonrails-talk?hl=en. >> > > > > >-- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To view this discussion on the web visit https://groups.google.com/d/msg/rubyonrails-talk/-/fl-g8AYGOXMJ. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
when your validation fails you''re calling "new" again. you should create something called "validate" the path created does not provide desired results. Create a different path. On 4 April 2012 15:51, Linus Pettersson <linus.pettersson-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I don''t quite understand what you mean. > > Do you understand my problem? > > When the user enters the information into the form correctly and it > validates everything works great. However, if it is not correctly filled > out the "new" action will get re-rendered and displaying the form errors. > The issue is that instead of showing 2 Participant "fields groups" it now > displays 4, using the code above. > > > > Den onsdagen den 4:e april 2012 kl. 20:55:43 UTC+2 skrev Charles: >> >> is there a way to check if the participant field is already created >> before creating it? >> >> Is_A and Has_A relationships. Describe the relationship between the forms >> >> >> On 4 April 2012 14:42, Linus Pettersson <> wrote: >> >>> Hi! >>> >>> I have created a nested form and now I want to make it dynamic. I have >>> two models, "Applications" and "Participants". Each application may have >>> several participants, but at least one which is the contact person. An >>> issue that I have is that when the form is not validated it renders the >>> participants fields twice. >>> >>> - How can I avoid that? >>> >>> # Applications/new.html.erb >>> <div class="row span8 offset2 form-wrapper"> >>> <h1>Ny anmälan</h1> >>> >>> <%= semantic_form_for @application, :html => { :class => >>> "form-horizontal" } do |f| %> >>> <%= f.semantic_errors %> >>> <%= f.inputs do %> >>> <%= f.inputs :for => :participants, :name => "Kontaktperson", :class => >>> "participants_form well" do |p| %> >>> <%= p.input :name, :label => "Namn", :required => true %> >>> <%= p.input :address, :label => "Adress", :required => true %> >>> <%= p.input :phone, :label => "Mobiltelefon", :required => true %> >>> <%= p.input :email, :label => "Epostadress", :as => :email, :required => >>> true %> >>> <%= p.input :age, :label => "Ålder" %> >>> <%= p.input :has_something, :label => "Ja..." %> >>> <%= p.input :special_food, :label => "Annan specialkost" %> >>> <%= p.input :is_contact, :as => :hidden, :value => true %> >>> <% end %> >>> >>> <%= f.inputs :class => "participants_fields" do %> >>> <%= render "participant_form", :f => f %> >>> <% end %> >>> <%= link_to "<i class=\"icon-plus-sign\"> </i> Lägg till fler >>> deltagare...".html_safe, "#", :class => "btn pull-right" %> >>> >>> <%= f.inputs :name => "Övrig information" do %> >>> <%= f.input :extra_information, :input_html => { :class => "span4", >>> :rows => 3 } %> >>> <%= f.input :membership_paid, :label => "JA" %> >>> <% end %> >>> <% end %> >>> >>> <%= f.buttons do %> >>> <%= f.submit :value => "Skicka anmälan", :class => "btn btn-primary >>> btn-large commit create" %> >>> <% end %> >>> <% end %> >>> </div> >>> >>> # Applications Controller >>> def new >>> @application = Application.new >>> @application.participants.**build >>> respond_to do |format| >>> format.html >>> format.js { render :nothing } >>> end >>> end >>> >>> def create >>> @application = Application.new(params[:**application]) >>> >>> if @application.save >>> flash[:notice] = "Din anmälan har skickats!" >>> redirect_to root_path >>> else >>> flash[:error] = "Det gick inte att spara din anmälan" >>> render :action => "new" >>> end >>> end >>> >>> >>> I guess that my participants gets built again when it renders the new >>> action in the "create" method. But how can I avoid that? >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Ruby on Rails: Talk" group. >>> To view this discussion on the web visit https://groups.google.com/d/** >>> msg/rubyonrails-talk/-/**ihqbWCmIL0YJ<https://groups.google.com/d/msg/rubyonrails-talk/-/ihqbWCmIL0YJ> >>> . >>> To post to this group, send email to rubyonrails-talk@googlegroups.**com<rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> >>> . >>> To unsubscribe from this group, send email to >>> rubyonrails-talk+unsubscribe@**googlegroups.com<rubyonrails-talk%2Bunsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> >>> . >>> For more options, visit this group at http://groups.google.com/** >>> group/rubyonrails-talk?hl=en<http://groups.google.com/group/rubyonrails-talk?hl=en> >>> . >>> >> >> >> >> >> -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/fl-g8AYGOXMJ. > > To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.