【问题标题】:Rails: link_to with :remote => true not workingRails:link_to with :remote => true 不工作
【发布时间】:2023-03-20 04:20:02
【问题描述】:

我正在尝试实现一种类似于 Stack Overflow 上的投票系统。 (使用 Rails 3)我希望在不重新加载页面的情况下完成投票,所以我有这个代码

link_to("/tags/#{tag.id}/upVote", :remote => true )

因此,在我的 /views/tags 目录中,我有一个名为 _upVote.js.erb 的文件,我认为单击此链接时会调用该文件,但事实并非如此。它正在尝试将 upVote 处理为 HTML,这是我得到的错误

使用 {:formats=>[:html] 缺少模板标签/upVote

另外,这是我的路线文件中的内容

match "tags/:id/upVote" => "tags#upVote"

有什么想法可以让它发挥作用吗?

【问题讨论】:

  • 我删除了答案,因为那不是正确的答案。

标签: ruby-on-rails


【解决方案1】:

如果您在一个空白的新页面中收到此错误消息,这意味着您的远程调用不起作用并且该调用不是通过 Ajax 请求进行的。您需要检查您的布局是否正确加载了 jQuery 和此处提供的 jQuery Rails 连接器:http://github.com/rails/jquery-ujs

然后使用 Firefox+Firebug 来检查调用是否真的是 Ajax 调用。

【讨论】:

    【解决方案2】:

    请参阅此帖子以获取解决方案:

    Rails form_for :remote=>true is not calling js method

    将 rails 环境更改为 JQuery 时,可能会不小心丢失 jquery-ujs 文件。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。 为了解决这个问题,我跟着

      最后,我不得不

      Require both jquery and jquery_ujs were in the application.js manifest.
      //= require jquery
      //= require jquery_ujs
      

      毕竟,Rails ajax 开始为我工作。

      【讨论】:

        【解决方案4】:

        在 Rails 应用程序根目录中键入类似内容:

        rails g jquery:install
        

        然后,在您的 application.html.erb 中添加该行

        <%= javascript_include_tag :defaults %>
        

        或显式(不要忘记单独包含您的 jquery):

        <%= javascript_include_tag :rails, :application %>
        

        [编辑:使用资产管道的 Rails 3.1 或更高版本]

        使用gem jquery-rails(如上所述)并将以下几行添加到app/assets/javascripts/application.js(如果它们还没有的话):

        //= require jquery
        //= require jquery_ujs
        

        希望这会有所帮助!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-04-27
          • 1970-01-01
          • 2011-06-22
          • 2016-04-28
          • 1970-01-01
          • 2011-04-28
          相关资源
          最近更新 更多