JS代码中的Ruby插值

时间:2016-02-26 18:59:45

标签: javascript ruby-on-rails interpolation

我正在尝试在用户点击特定元素时生成select_tag。我的页面中有这个JS:

  $(document).ready(function(){
    $("#add_hotel").click(function(){
      $(".new_hotels").append('<%=select_tag "dash_select", options_for_select(session[:user_hotel_list].collect{ |hotel| [hotel["name"], hotel["id"]] }) %>');
    })
  })

结果代码如下所示:

 <script>
  $(document).ready(function(){
    $("#add_hotel").click(function(){
      $(".new_hotels").append('<select name="dash_select" id="dash_select">
<option value="31">Plaze</option>
<option value="30">dndjd</option></select>');
    })
  })

  </script>

但是我得到了Uncaught SyntaxError:意外的令牌ILLEGAL。

--- --- EDIT

出错的行是这一行:

  $(".new_hotels").append( '<select name="dash_select" id="dash_select"><option value="31">Plaze</option>
<option value="30">dndjd</option></select>');

--- --- EDIT

这是我在控制台中收到错误enter image description here的确切行的图片:

我注意到session[:user_hotel_list]中只有一个元素,代码运行正常。 正如所建议的那样,它可能是一个与特殊隐藏字符和复制粘贴问题相关联的问题,但我试着逐字写代码,我仍然得到这个错误......

2 个答案:

答案 0 :(得分:0)

您可以创建名为your_js_file.js.erb的文件。然后你就可以在里面使用Rails标签了。

答案 1 :(得分:0)

为什么不首先将插值存储在变量中然后将其添加到变量中?看起来你插值生成的代码如果全部在一行中就可以工作。我在检查员中运行它,如果它在一行中它运行正常。无论如何尝试。希望它有所帮助。

      $(document).ready(function(){
        $("#add_hotel").click(function(){
          var hotels = <%=select_tag "dash_select", options_for_select([["all hotels", "all"]]+ session[:user_hotel_list].collect{ |hotel| [hotel["name"], hotel["id"]] }) %>
          $(".new_hotels").append(hotels);
        })
      })