我有一个这样的需求,在页面上有一个表格,一个编辑按钮,点击编辑按钮触发一个 js 的 onclick 事件 (此时的 js 是通过 javascript_include_tag 引入的),调用一个方法,在方法中要让表格中的一列由文本变成可编辑的下拉框,而且这个下拉框中的 option 是要从 rails 后台获取,我在.js 文件中用 jq 写了一个遍历,用
$(this)[0].innerHTML = '<%=collection_select(:plan_detail,:detail_type_id,PlanDetailType.all,:id,:name)%>';
这种方式 (dom 对象的 innerHTML 我也尝试过) 来进行输出,但是页面上输出的结果是原样输出,没有什么变化,帮助方法没有被解析成 html 标签。如下图
我尝试把 js 直接放到.html.erb 文件中,这样的话是可以解析成 html 标签的,在 js 里面可以看到输出来是 html 标签,但是由于 select 标签中的内容比较多,导致在 js 文件中一行装不下,得换行,js 中换行得加\,所以导致前端报错,如下图:
但是这样的错误我知道错在哪儿了,但是没有办法去避免。
第一个问题:为什么引入 js 文件的形式来输出不可行,但是将 js 直接放到 html.erb 文件中又是可行的呢?
第二个问题:如果我想要在 js 中输出 rails 的帮助方法,有没有什么好的解决方案?
这个问题困扰了两天了,望各位懂的人提示我一下解决办法,解释一下上述现象的原因。我查过很多资料,raw,sanitize,html_safe 我都尝试过,gon 的 gem 我也试过,但是没有什么用,可能是我使用的方法不对,总之,希望各位指点一下。。。