作为ajax调用的一部分,我试图使用嵌入式ruby在.js.erb文件中生成jquery select的id部分。 下面是我如何使用它,但我不得不使用一点点的手并在浏览器中获取javascript以将id连接到选择器而不是在服务器上构建jquery选择器。
$("tr.design#".concat(<%= @form_column.form_row.id.to_s %>)).html("<%= escape_javascript( render(:partial => "form_rows/row") ) %>")
我尝试了几种组合:
$(<%= escape_javascript("tr.design#" << @form_column.form_row.id.to_s) %>)
$(<%= "tr.design#" << @form_column.form_row.id.to_s %>)
$("tr.design#<%= @form_column.form_row.id.to_s %>")
在每种情况下,返回给客户端的选择器是$(tr.design#17)(没有引号),因此没有按照我想要的在客户端上执行,即jquery没有找到任何匹配。
.html("<%= escape_javascript( render(:partial => "form_rows/row") ) %>")
部分已正确发送到浏览器,即&lt;%= ...%&gt;表现如预期的那样,浏览器上的javascript收到了.html函数中传递的格式良好,引用(和转义)的html。
任何人都对如何避免在.js.erb文件中使用.concat有任何想法?
答案 0 :(得分:10)
喜欢这个
$('#user_<%= @user.id %>').click(blah blah blah);
如果您放置&lt;%=%&gt;在js.erb文件中,该代码被评估为在结果JS中打印。您可以构造任何您想要的唯一字符串。 可能:classname_:id是最常见的解决方案。
顺便说一句,评估的代码不必是字符串。 &LT;%=%GT;调用.to_s进行打印。在该示例中,@ user.id被转换为字符串。
答案 1 :(得分:0)
ids是你可能做的独特的
$("#"+<%= @form_column.form_row.id.to_s %>)