RJS confirmation popup

Hi everyone,

In my app users can save queries. I want to warn them if they are about to overwrite an existing query (same name). I wanted to do this with a confirm javascript popup.

My question is: Is it possible to generate a confirmation popup from an RJS template and then somehow get the answer back? To know if my controller should overwrite the query or just discard the changes.

Up until now, I didn't find a way to generate a confirmation popup through RJS, except with the call method to call a javascript method that will generate this for me...but I was hoping for something a bit more ruby...and it doesn't solve the problem of getting the answer back to the controller.

Thank you,

Jd

Do the pop-up before the Ajax post

:confirm => ‘Are you sure you want to save this?’

I’m assuming that you can easily check for existing queries when this page loads and make the confirm conditional.

Jason

First of all you should make sure you’re replying to the list and not to the person who posted.

As for making the confirm conditional, you need to generate the options hash before it’s used. e.g.:

<%= form_remote_tag(:url => {:action => ‘save_query’},

                :confirm => 'Are you sure you want to overwrite this?',
                :html => {:id => 'save_query_form'}) %>

Becomes

<% options = { :url => {:action => ‘save_query’}, :html => {:id => ‘save_query_form’} } %>

<% options[:confirm] = “Are you sure…” if some_condition_here %>

<%= form_remote_tag( options ) %>

Jason

Ah I never even realized that you could pass the options like that. But unfortunately it doesn't exactly work in my case. The problem is that the condition is not only server-side, but it depends on what the user enters as the name of the search:

<%= form_remote_tag(:url => {:action => 'save_query'},                     :confirm => 'Are you sure you want to overwrite this?',                     :html => {:id => 'save_query_form'}) %>

    <%= submit_tag 'Save query as'%>     <%= text_field 'search', 'name' %> <%= end_form_tag %>

So if the text in the text_field 'search[name]' matches any of the queries saved on the server.

So basically the query list is on the server side, but the name of the new server is on the client (browser) side.

Any idea how this could be done?

Thanks,

Jd