【问题标题】:jQuery ajax call in Rails?Rails 中的 jQuery ajax 调用?
【发布时间】:2010-09-07 14:00:16
【问题描述】:

我想执行一个简单的事情。当用户单击链接时,jQuery 需要生成一个 Ajax 请求,该请求将链接项的 id 发送到控制器中的方法。基本上,当用户单击删除链接时,我想要一个漂亮的模态对话框窗口。该窗口需要包含有关已删除项目的各种信息。 例如。 <%= link_to "Delete", item, :id => "delete" %>

我可以使用 jquery 选择此链接,甚至可以在用户单击它时打开一个弹出对话框。通过 application.js 但我真正需要的是 jQuery 在单击链接时调用我的方法,在我的方法中我将通过 format.js 回答。在 js 文件中,我放置代码以显示带有所需参数的模式对话框。当然,所有这些动作都是通过 ajax 异步进行的。 我无法为控制器中的方法生成 ajax 请求。不知道如何处理 jQuery.ajax 方法,尤其是如何强制 jQuery 将 url 参数传递给 rails 方法。我观看了 railscast 并使用 .post 研究了示例,但我不需要提交任何表单。 任何建议表示赞赏。 谢谢

【问题讨论】:

    标签: ruby-on-rails jquery-ui jquery


    【解决方案1】:

    Rails 需要一个带有隐藏参数的帖子。

    $('#delete').click(function(e){
      e.preventDefault();
      $.post($(this).attr('href'), { _method: 'delete' });
    });
    

    【讨论】:

      【解决方案2】:

      Rails 3 使用 jQuery 插件以一种不显眼的方式做到这一点:

      http://github.com/rails/jquery-ujs
      

      一旦你将它加载到你的布局中(使用 jQuery 1.4.1 或更新版本),你就可以很容易地进行这样的交互。

      <%= link_to 'delete', item, :remote => true, :method => :delete, 
             :confirm => 'Are you sure?' %>
      

      在 Rails 3 中,所有这些都是为您的链接添加一些 HTML 属性。这些被 jQuery 插件中的实时处理程序捕获。不过,在 Rails 2 应用程序中使用这种行为很容易:

      <%= link_to 'delete', item, :'data-remote' => true, :'data-method' => :delete, 
             :'data-confirm' => 'Are you sure?' %>
      

      请注意,您需要在视图中加载 jQuery 插件。

      http://api.rubyonrails.org/classes/ActionView/Helpers/UrlHelper.html#method-i-link_to

      如果您需要将初始响应作为模式而不是警报,则可以使第一个链接更简单一些:

      <%= link_to 'delete', modal_confirm_item_url(item), :'data-remote' => true %>
      

      您可以将其链接到一些预先存在的成员操作。或者,由于您最终可能希望使用来自这些操作的 .js 响应来处理其他 ajax 请求,因此创建一个新操作来处理此行为可能是有意义的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-16
        • 2011-07-20
        • 1970-01-01
        • 1970-01-01
        • 2011-12-17
        • 2015-01-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多