新手问题 怎么在 JS 中输出 Rails 的帮助方法?

qq792326645 · 2016年04月26日 · 最后由 plpl123456 回复于 2016年04月27日 · 2599 次阅读

我有一个这样的需求,在页面上有一个表格,一个编辑按钮,点击编辑按钮触发一个 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 我也试过,但是没有什么用,可能是我使用的方法不对,总之,希望各位指点一下。。。

  1. 不要代码截图,贴代码!
  2. 整理你的问题;
  3. 当内容多的时候,请整齐排版!

请!不!要!重!新!开!贴!否则封号!

#1 楼 @huacnlee 不好意思,我以为是我发错地方发到招聘版块上了,不知道是我的格式问题。

#1 楼 @huacnlee 你好,麻烦看一下修改之后的格式行不行

1 : js 引入的方式,由于先需要编译 js 文件,编译过后的 js 文件属于静态资源,当然无法调用 ruby 方法。当把 js 放在 html.erb 中可以,是因为每次请求该页面,js 都会重新生成新的。 2:使用 rjs, 利用 rails view helper 生成 dom string , 前端 insert。

啊啊啊啊啊我快要疯了,那我现在改好了 要不要单独发给你看下呢

需要 登录 后方可回复, 如果你还没有账号请 注册新账号