1

これを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> 
4

2 に答える 2

2

この投稿を見つけました。きっと解決してくれると思いますhttp://www.alfajango.com/blog/rails-3-remote-links-and-forms/

于 2012-03-14T21:08:06.523 に答える
1

私はこれを少し違う方法で行うのが好きです。

<%= 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() が機能する可能性があります) そして、これは before 条件も処理します。

完全に更新するには、別のテンプレートを使用する方が良いと思います。たとえば、あるコントローラーの「新しい」アクションにフォームを送信するとします。テンプレート new.js.erb を持つことができます

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

このテンプレートでは、コントローラーで定義されたインスタンス変数にもアクセスできます。

于 2011-07-22T16:44:35.200 に答える