【问题标题】:Rails 4, Turbolinks 3, Partial ReplacementRails 4,Turbolinks 3,部分替换
【发布时间】:2015-05-08 09:00:15
【问题描述】:

如何在 Rails 4.2 中使用这个新的 Turbolinks 3.0(分支:'master')?

我正在尝试,但我从 Chrome 收到此错误:

Uncaught SyntaxError: Unexpected token :

如果我像这样使用部分替换:

<%= link_to "Something", root_path %>

然后在同一页面中:

<script> Turbolinks.visit(url, { change: 'areaDiv' }); </script>

根据文档:https://github.com/rails/turbolinks#partial-replacements-with-turbolinks-30

页面完全重新加载,我收到了那个错误。怎么办?

后天编辑

我有 Rails 4.2.1 标准。

在 Gemfile 中我添加了:

gem 'turbolinks', :github => 'rails/turbolinks', :branch => 'master'

现在我有一个控制器:

def ok_category
      render plain: "Ok", change: 'categoriesdiv'
  end

或者这个:

 def red_category
      redirect_to "http://www.google.com", change: 'categoriesdiv'
  end

或其他类似的:

def red_category
      render partial: 'category_choose', change: 'categoriesdiv'
  end

如果我在每一行的末尾添加, turbolinks: true,什么都没有!

我的 chrome 窗口的标题正在更改为简洁的“未定义”,但如果我使用 Chrome 开发人员工具,它会在“网络”选项卡中告诉我,对服务器的请求已通过“GET”方法完成,“304” status, "Text/Javascript" 类型,都没有错误。

在 application.html.erb 我有:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Hello!</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>
<div class="container">

<div id="test"><%= Time.now.to_s %></div>
<div id="links"><%= link_to "Testmylink", ok_category_path(1), remote:true %></div>

<%= yield %>

<div id="categoriesdiv" data-turbolinks-temporary>Yes yes!</div>
<footer class="footer">
  <p class="text-center">Hello!</p>
</footer>
</div>
</body></html>

我怎么了?

【问题讨论】:

  • 你的脚本是如何被触发的?

标签: ruby-on-rails ruby ruby-on-rails-4 turbolinks


【解决方案1】:

Turbolinks 很棘手,无论哪种方式,这里都是值得花时间研究的资源。我发现您编写的内容和执行方式之间存在细微的语法差异。

https://github.com/rails/turbolinks/issues/448

【讨论】:

  • 这是 Github 上的一个问题。在家里的自述文件(文档)中,他们发布了我尊重的正确版本的语法。它只是不起作用。
【解决方案2】:

当使用link_to 时,remote 参数告诉 Rails 使用 turbolinks 跟随链接,所以我认为你需要remote: true

您还需要添加更改区域,我不确定那一点,但我会选择这样的:

<%= link_to "Something", root_path, remote: true, { :change => 'areaDiv' } %>

【讨论】:

  • 语法错误,意外 ')',期待 => ...change => 'areaDiv'} );
  • 这里没有圆括号(除非您更改了代码),因此请查看您的其他代码(尤其是前面的行),看看是否没有其他原因导致该错误。
  • 现在,我正在使用 onclick: "Turbolinks.visit('root_path', {change: 'areaDiv'} 并且它有效。但是,onclick 真的是这样吗?
  • 我希望不是,我看到下面提到的问题暗示了这一点。你试过'data-turbolinks-change' =&gt; 'areaDiv'(或者data: {'turbolinks-change' =&gt; 'areaDiv'})这样的东西吗? (我不知道这是否是问题中提出的)
  • 亲爱的@jcuenod,我在努力。但是,如果您阅读此处的文档 (github.com/rails/…),您认为我们必须为 link_to 做什么?
猜你喜欢
  • 1970-01-01
  • 2013-09-27
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 2020-02-10
相关资源
最近更新 更多