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() 可能会起作用)这也将处理之前的条件。

对于完整和更新,虽然我发现使用不同的模板更好。例如,假设您将表单提交给某个控制器的“新”操作。你可以有一个模板 new.js.erb

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

在此模板中,您还可以访问控制器中定义的实例变量。

于 2011-07-22T16:44:35.200 回答