我正在尝试在用户点击特定元素时生成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
我注意到session[:user_hotel_list]
中只有一个元素,代码运行正常。
正如所建议的那样,它可能是一个与特殊隐藏字符和复制粘贴问题相关联的问题,但我试着逐字写代码,我仍然得到这个错误......
答案 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);
})
})