Преобразование form_remote_tag в form_for для Rails 3 UJS - PullRequest
1 голос
/ 22 июля 2011

Я пытаюсь преобразовать это для Rails 3

<%= form_remote_tag :url => feedback_url, 
  :update    => 'flash_message', 
  :before    => "doSomething()", 
  :condition => "condition()", 
  :complete  => "doSomethingElse();" -%>

Вот что у меня есть

<%= form_tag feedback_url, :remote => true, :id => 'form' do %>
  <%# Gather data %>
<% end -%>
<script>
    $(function() { 
      $("#form").bind("ajax:beforeSend", function() {
          doSomething();   
        }).bind("ajax:success", function() {
          doSmomethingElse();
        });
      });   
    });
</script> 

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Я нашел этот пост для вас.Я уверен, что вы решите http://www.alfajango.com/blog/rails-3-remote-links-and-forms/

1 голос
/ 22 июля 2011

Мне нравится делать это немного по-другому.

<%= form_tag feedback_url, :remote => true, :id => 'feedback_form' do %>
  ...
<% end %>
<script type="text/javascript">
  $("form#feedback_form").submit(function(event){
    $('flash_notice').css('display', 'block');
    return condition() == true
  });
</script>

Если обработчик отправки для формы возвращает false, он не будет отправлять форму. (Я уверен, что это так, но event.preventDefault () может работать, если это не так) И это также позаботится о предыдущих условиях.

Для полного и обновления, хотя я считаю, что лучше использовать другой шаблон. Например, допустим, что ваша форма подчиняется «новому» действию какого-либо контроллера. Вы можете иметь шаблон new.js.erb с

  $('flash_notice').css('display', 'none')
  doSomething();

В этом шаблоне у вас также есть доступ к переменным экземпляра, определенным в контроллере.

...