link_to方法导致jquery无法加载到js.erb中

时间:2015-01-02 20:39:09

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

我试图使用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");

只要我不使用&#39; link_to&#39;代码就可以正常运行。方法。我使用&#39; link_to&#39;时,它就会停止工作。

我累了在&#39; insertafter&#39;之前添加提醒。方法。添加link_to甚至不会触发警报。

在没有javascript错误的情况下,该页面似乎正常呈现。 rails console log看起来很好:

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

1 个答案:

答案 0 :(得分:2)

我可以看到link_to的版本吗?

我无法告诉您提供的内容,但是在将html放入jquery字符串之前是否正在清理它?

我认为你在做什么:

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

你应该做什么:

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

&#39; j&#39;在一开始是一种确保它不会从javascript字符串中逃脱的方法。

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