On 18 November 2011 18:28, Mauro <[email protected]> wrote: > On 18 November 2011 18:13, Mauro <[email protected]> wrote: >> On 18 November 2011 17:05, Jim Ruther Nill <[email protected]> wrote: >>> >>> >>> On Fri, Nov 18, 2011 at 8:25 PM, Mauro <[email protected]> wrote: >>>> >>>> On 18 November 2011 13:17, Jim Ruther Nill <[email protected]> wrote: >>>> > >>>> > >>>> > On Fri, Nov 18, 2011 at 8:01 PM, Mauro <[email protected]> wrote: >>>> >> >>>> >> I want submit a form via ajax only if i have a new record, so I've set: >>>> >> (I'm using simple_form) >>>> >> >>>> >> = simple_form_for @document, :html => { :multipart => true }, :remote >>>> >> => @document.new_record? ? true : false, do |f| >>>> >> = render 'shared/error_messages', :object => @document >>>> >> >>>> >> = field_set_tag t('document') do >>>> >> .block >>>> >> .column.span-24 >>>> >> .inputs >>>> >> = f.input :name >>>> >> = f.input :description >>>> >> = f.input :doc, :as => :file >>>> >> = f.input :company_id, :input_html => { :value => >>>> >> params[:company_id] }, :as => :hidden if @document.new_record? >>>> >> >>>> >> .actions >>>> >> = f.button :submit >>>> >> >>>> >> It works if the validations are all ok but if a validation fails, I >>>> >> correct the error and then submit again, remote is no longer valid >>>> >> because, I think, new_record? return false. >>>> > >>>> > nope. if @document is not saved, then @document.new_record? should >>>> > still return true. When you say you correct the error, you're >>>> > submitting >>>> > the >>>> > same form right? without page reload since you're submitting via ajax so >>>> > the form should still submit via ajax. >>>> >>>> I have strange behaviors. >>>> As you see the form has remote => true if model is a new record. >>>> But when I call submit the form is not submited via ajax. >>>> The controller respond_to :js and I have new.js.erb and create.js.erb >>>> files. >>>> Perhaps the multipart create a problem? >>>> >>> >>> I didn't read the code carefully but I think the :remote key-value pair >>> should go inside the :html hash >>> Let me know if that submits your form via ajax. >> >> I've changed to: >> >> = simple_form_for @document, :html => { :multipart => true, :remote => >> @document.new_record? ? true : false} do |f| >> = render 'shared/error_messages', :object => @document >> >> = field_set_tag t('document') do >> .block >> .column.span-24 >> .inputs >> = f.input :name >> = f.input :description >> = f.input :doc, :as => :file >> = f.input :company_id, :input_html => { :value => >> params[:company_id] }, :as => :hidden if @document.new_record? >> >> .actions >> = f.button :submit >> >> but still doesn't work via ajax. > > I've noticed that if I don't fill the file field then if I create a > new document but without attaching any file then ajax works. > If I attach a file in the file field then ajax doesn't work.
I seems that traditional upload does not work via ajax. I've resolved via remotipart gem. http://www.alfajango.com/blog/remotipart-rails-gem/ -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

