我需要在javascript代码中获取参数的值并将其传递给rails部分视图,但它不会让我这样做。这就是我所拥有的:
<div id="myCarousel" data-carousel-3d>
<% @users.each do |user| %>
<input type="image" src="/assets/<%= user.location %>" data-toggle="modal" data-target="#modal-1" />
<% end %>
</div>
<script>
$('#myCarousel').on('select', function (evt, index) {
var myHtml = "<\%= escape_javascript (\"#{render :partial => 'share', :locals => { :user_location => ";
myHtml = myHtml.concat(index);
myHtml = myHtml.concat(".jpg }}");
$("#modal-test").append("<%= escape_javascript( myHtml ).html_safe %>");
});
</script>
这段代码会给我和错误信息:
未定义的局部变量或方法`myHtml'用于#&lt; :0x007fe1d472cd70&GT;
我尝试将整个字符串连接到myHtml并执行追加(myHtml),但这样它就不会在页面中呈现erb代码。它显示为一个字符串。
我们有一个显示图像的轮播,最终目标是当用户点击其中一个图像时,我们会显示一个模态窗口,其中包含他们点击的图像。
有什么想法吗?
答案 0 :(得分:0)
$("#modal-test").append("<%= escape_javascript( myHtml ).html_safe %>");
这需要 rails 变量myHtml
。
您试图传递无法工作的javascript
变量mHtml
(它不会进行插值)。
您需要执行以下操作:
$("#modal-test").append("<%= escape_javascript(" + myHtml + ").html_safe %>");
或者只是简单的旧JS(您已经提交了HTML,为什么还需要更多ERB来过滤它?
$("#modal-test").append(myHtml);