【问题标题】:doing a remote => true call with javascript使用 javascript 进行远程 => true 调用
【发布时间】:2013-01-07 20:33:25
【问题描述】:

有没有办法通过 javascript 实现与 link_to ... remote=> true 相同的行为?

也许没必要——

我有一个包含用户名和图片的 div。

我想让整个 div 对点击做出反应并转到方法(例如users#show),就好像它是一个link_to。

link_to 的问题在于它创建了a href,使文本可链接等。

另外,我似乎无法使用它来使整个 div 可点击,只能点击文本。

试图更多地解释我自己 -

如果link_to对应javascript中的window.location

javascript 中的link_to:remote=>true 是什么?

【问题讨论】:

    标签: javascript ajax ruby-on-rails-3 rjs ujs


    【解决方案1】:

    我对 Rails 并不完全熟悉,但是在阅读了该方法的描述后,听起来您只是在进行 ajax 调用。有趣的是,Rails 对这个概念进行了多少抽象。

    如果您使用的是 jQuery 之类的库,那么在点击时进行 ajax 调用非常简单:

    $('element').click(function(e){
      $.get('url', function action(){
        // Do stuff
      });
    });
    

    【讨论】:

    • $.get 是否与 :remote=>true 与 GET 相同?
    • 没有。我认为他不明白 remote=true 对 rails 的作用。
    • 就像我说的,我不知道 link_to 做什么,这意味着我不完全理解这个问题,但我向你保证,如果我知道你想要完成什么,我会一个解决方案。
    • :remote=>true -- 这将允许不显眼的 JavaScript 驱动程序向相关 URL 发出 Ajax 请求,而不是跟随链接。每个驱动程序都提供了用于侦听 Ajax 请求完成并在完成后执行 JavaScript 操作的机制。根据该描述,它向 url 发出请求,然后执行操作。由于 div 上的 click 事件不执行任何操作,因此您不会被重定向。如果您在链接上使用它,您将添加 e.preventDefault()。
    • 他正在使用与 Rails 交互的 jquery-ujs 库:github.com/rails/jquery-ujs/blob/master/src/rails.js 注意a[data-remote] 选择器。
    【解决方案2】:

    要让 DIV 与 remote=>true 一起工作,在仔细检查 jquery-ujs 之后,您似乎可以将希望可点击的 DIV 包装在一个 FORM 周围,如下所示:

    <form action="/users" method="POST" data-remote="true">
       <div onclick="$(this.parentNode).trigger('submit.rails');">Remote Request</div>
        <input type="submit" style="display:none" />
    </form>
    

    【讨论】:

      【解决方案3】:

      这就是你的做法:

      $.rails.handleRemote($('&lt;a&gt;', { href: '/path', 'data-method': 'GET' }));

      【讨论】:

        猜你喜欢
        • 2012-04-17
        • 1970-01-01
        • 2013-09-19
        • 2013-02-20
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 2011-05-03
        • 1970-01-01
        相关资源
        最近更新 更多