【问题标题】:link_to method causes jquery to not load in js.erblink_to 方法导致 jquery 无法在 js.erb 中加载
【发布时间】:2015-01-02 20:39:08
【问题描述】:

我正在尝试使用 jquery .insertafter 方法在表中动态插入一行。我在“create.js.erb”中有我的代码,如下所示:

$("<tr><td><%= @work.id %></td><td><%= @work.user.lname %>, <%=@work.user.fname %></td><td><%= link_to(@work.project.name, @work.project, 'data-no-turbolink' => true) %></td><td><%=@work.datetimeperformed%></td><td><%=@work.hours %></td></tr>").insertAfter("tr#headerrow");

只要我不使用“link_to”方法,代码就可以正常工作。我使用“link_to”的那一刻,它就停止工作了。

我厌倦了在 'insertafter' 方法之前添加警报。添加 link_to 甚至不会触发警报。

页面似乎在没有 javascript 错误的情况下呈现良好。 rails 控制台日志看起来不错:

User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 281110143]]
Project Load (0.1ms)  SELECT  "projects".* FROM "projects" WHERE "projects"."id" = ? LIMIT 1  [["id", 730774123]]
Rendered works/create.js.erb (3.0ms)

这是我调用 create.js.erb 的控制器代码。 format.js {} 调用 create.js.erb。

  def create
   @work = Work.create(work_params)

   respond_to do |format|
     if @work.save
       format.html {redirect_to @work, notice: 'Work Created'}
       format.js { render content_type: 'text/javascript'}
     else
       format.html {render 'new'}
       format.js {}
     end
   end

结束

我厌倦了堆栈溢出关于 turbolinks 的解决方案,但这也无济于事。

Rails, javascript not loading after clicking through link_to helper

Rails 4: disable Turbolinks in a specific page

Using turbolinks in a Rails link_to

感谢您在这方面的帮助。

谢谢! 迈克·G

【问题讨论】:

  • 你的create.js.erb在哪里?
  • @JTG - create.js.erb 位于 views/works 目录中
  • 使用 Chrome,打开开发者工具并点击网络面板。在您的应用程序中执行触发插入新行的操作。在“网络”面板中,单击与该请求对应的请求名称,然后查看“响应”。查看 link_to 生成的 html 是否导致无效的 js 语法。在您的问题中也发布生成的响应

标签: javascript jquery ruby-on-rails ruby-on-rails-4


【解决方案1】:

我可以查看带有 link_to 的版本吗?

我无法从您提供的内容中看出,但您是否在将 html 放入 jquery 字符串之前对其进行了清理?

我认为你在做什么:

$("<%= link_to 'whatever', 'whatever' %>")
#=> $("<a href="whatever">whatever</a>")

你应该做什么:

$("<%=j link_to 'whatever' %>")
#=> $("<a href=\"whatever\">whatever</a>")

开头的“j”是一种确保它不会从 javascript 字符串中转义的方法。

如果没有更多信息,这是我最好的猜测。

【讨论】:

  • 添加 j 进行转义正是我所需要的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多