不能使用带有rails的javascript参数

时间:2015-10-03 22:06:10

标签: javascript ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 erb

我需要在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代码。它显示为一个字符串。

我们有一个显示图像的轮播,最终目标是当用户点击其中一个图像时,我们会显示一个模态窗口,其中包含他们点击的图像。

有什么想法吗?

1 个答案:

答案 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);