因此,当我使用Remotipart远程上传文件时,我遇到了一个非常有趣的问题。我在update.js.erb
视图中尝试了以下两个版本,服务器在成功上传文件后发送:
<%= remotipart_response do %>
$("#container").html('<p>Success!</p><%= link_to('Back', gallery_items_path, :remote => true) %>');
<% end %>
和
<%= remotipart_response do %>
$("#container").html("<p>Success!</p><%= link_to('Back', gallery_items_path, :remote => true) %>");
<% end %>
版本1成功更改#container
中的标记,版本2失败,没有任何错误,服务器端或客户端。我认为当JSON在播放时,单引号和双引号只是一个问题,但似乎我错了。我还注意到Remotipart example仅使用单引号,我不确定这是否有意。
我正在使用Rails 3.2.1,Remotipart 1.0.2,并且(不确定这是否重要)Chrome 17。
有谁知道是什么原因引起的?
编辑: 回答亚历克斯的问题:
在第一种情况下,正如预期的那样,渲染的输出是:
<div id="container">
<p>Success!</p>
<a href="/gallery_items" data-remote="true">Back</a>
</div>
在第二种情况下,就像我说的那样,<div id="container">
的内容没有变化。
答案 0 :(得分:1)
link_to生成带双引号的链接标记,并关闭javascript中的引号
答案 1 :(得分:0)
第二种情况下传递给浏览器的实际js是;
$("#container").html("<p>Success!</p><a href="/gallery_items" data-remote="true">Back</a>");
外部字符串作为分隔符包含在"
中,但由于内容也包含"
,因此它会中断。 (x = "aa"bb"
无效)。
前一个示例使用'
分隔符,因此没有问题。
要使用"
,您必须转义link_to
返回生成
$("#container").html("<p>Success!</p><a href=\"/gallery_items\" data-remote=\"true\">Back</a>");