Form remote only if new record

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.
Isn’t it?

On Fri, Nov 18, 2011 at 8:01 PM, Mauro [email protected] wrote:

   .inputs

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.

On 18 November 2011 13:17, Jim Ruther N. [email protected] wrote:

.actions
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?

On 18 November 2011 17:05, Jim Ruther N. [email protected] wrote:

(I’m using simple_form)
= f.input :description

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.

On Fri, Nov 18, 2011 at 8:25 PM, Mauro [email protected] wrote:

= render ‘shared/error_messages’, :object => @document

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.


You received this message because you are subscribed to the Google G.
“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.

On 18 November 2011 18:28, Mauro [email protected] wrote:

.inputs
correct the error and then submit again, remote is no longer valid
As you see the form has remote => true if model is a new record.
I’ve changed to:
= f.input :description
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/

On Nov 18, 5:28pm, Mauro [email protected] wrote:

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.

Files can’t be sent over ajax. There is the iframe trick which looks
like ajax (in that there is no full page reload) but is in fact just a
‘normal’ form submission. Some js libraries (e.g. jquery.form if my
memory is correct) will even do this automatically for you.

Fred

On 18 November 2011 18:47, Frederick C. [email protected]
wrote:

‘normal’ form submission. Some js libraries (e.g. jquery.form if my
memory is correct) will even do this automatically for you.

I’ve resolved with remotipart gem.

On 18 November 2011 18:13, Mauro [email protected] wrote:

I want submit a form via ajax only if i have a new record, so I’ve set:
= f.input :name
because, I think, new_record? return false.
But when I call submit the form is not submited via ajax.

= 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.