【问题标题】:Rails 3.1 link_to remote => true renders HTML instead of JS, the same code works in some casesRails 3.1 link_to remote => true 呈现 HTML 而不是 JS,相同的代码在某些情况下有效
【发布时间】:2011-11-28 11:41:37
【问题描述】:

这是我在 rails 3.1 中的代码

<%= link_to 'All',:action => "bycategory", :id => 'All', :remote => true %>

我已经定义了一个 js.erb。这段代码工作得很好,即在使用特定 CSS 放入表格时调用 JS。当我只是更改表 ID 或放入无序列表或其他任何地方时,它会在查找 html.erb 时给我模板错误。简直胜过我:(。

我发现的一件事是,在第一种情况下的 Params 中,除了 id 和 remote 之外,它还发送时间戳 在第二种情况下,缺少时间戳。不知道为什么会这样 任何帮助将不胜感激,花了太多时间调试这个

【问题讨论】:

  • 我不确定我是否完全理解这个问题。罪魁祸首可能是,由于远程操作是在运行时在浏览器上设置的,当找不到 id(或者如果浏览器上未启用 javascript)时,链接无处可去。使用 firebug 在浏览器上调试操作。
  • 这种不一致让我感到困惑,另外一种行为是,如果有两个请求,一个具有 remote=> true 另一个没有,在表的两个不同行中只有一个有效。
  • 添加:remote =&gt; true只添加了html属性data-remote="true",然后应该由jquery-rails处理。当您放置:remote =&gt; true 时,data-remote="true" 是否正确生成?
  • 这就是它的样子 所有 我有一个表单
  • 您好 Domnic,看起来问题是 data-remote="true" 未呈现。 Rails 3.1 中的错误?

标签: ruby-on-rails jquery


【解决方案1】:

我在使用 Rails 3.1.3 时遇到了同样的问题,我用 rake assets:precompile 解决了这个问题,但请确保您在 application.js 中有“//= require jquery_ujs”而不是“//= require jquery”,这是主要问题,我花了至少 12 个小时才决定这样做!太糟糕了!

【讨论】:

  • 谢谢!您的回答使我走上了正确的道路。我遇到了同样的问题并且实际上需要 jquery_ujs,但我还将 javascript 库缓存到一个文件中:javascript_include_tag *js_libraries, :cache =&gt; 'cached_js'。所以我尝试删除 :cache 参数并且它有效:)。
【解决方案2】:

您可能希望将 :action => "bycategory" 和 :id => 'All' 放在哈希中

<%= link_to 'All', { :action => "bycategory", :id => 'All' }, :remote => true %>

这将生成正确的 html 属性,即 data-remote="true" 否则它将简单地将后面的所有内容视为 http 请求属性。您的代码将生成 -

<a href="/bycategory?id=All&amp;remote=true">All</a>

而使用哈希会产生类似于

<a data-remote="true" href="/bycategory/All">All</a>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 2019-12-27
    • 2023-03-26
    • 2014-05-29
    • 2014-01-17
    相关资源
    最近更新 更多