我试图使用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
答案 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字符串中逃脱的方法。
没有更多信息,这是我最好的猜测。