【问题标题】:Ruby on Rails Embed Ruby Code in Javascript inside Application Erb File [duplicate]Ruby on Rails 在应用程序 Erb 文件中的 Javascript 中嵌入 Ruby 代码 [重复]
【发布时间】:2014-12-24 03:16:01
【问题描述】:

在 application.html.erb 布局文件的脚本标签内显示 rails 辅助方法的输出时,我需要帮助。 我将以下代码放在结束 html 标记之前:

<script>
    App.ready = function() {
        App.initApp(jQuery.parseJSON("<%= current_user_json %>"));
    }
</script>

此 current_user_json 是应用程序控制器文件中的辅助方法。

以上代码在浏览器中产生的输出(查看页面源)是:

<script>
    App.ready = function() {
        App.initApp(jQuery.parseJSON("{&quot;id&quot;:3,&quot;email&quot;:&quot;user5@user.com&quot;,&quot;username&quot;:null}"));
    }
</script>

正确的输出应该是:

<script>
     App.ready = function() {
         App.initApp(jQuery.parseJSON('{"id":3,"email":"user5@user.com","username":null}'))
     }
</script>

如果有人可以帮助我,我真的会从过去几天试图解决的这个问题中解脱出来。

【问题讨论】:

  • &lt;%= current_user_json.html_safe %&gt; 工作吗?
  • 嗨@spickermann,你的答案是正确的!

标签: javascript ruby-on-rails ruby ruby-on-rails-4 ember.js


【解决方案1】:

改变这个:

<%= current_user_json %>

到这里:

<%= current_user_json.html_safe %>

请注意,您必须确保正确转义您的 json。例如,如果您的 current_user_json 恰好有一个包含引号的字段,您必须转义该引号。如果你不逃跑,那么你所做的就是一个非常典型的黑客攻击向量,所以要小心。

【讨论】:

  • 嗨@joelparkerhenderson,感谢您快速、乐于助人和准确的回复。我对“攻击向量”不太熟悉。您能否帮我指出一些在线资源,我可以在其中阅读和了解更多关于它们的信息,以保护代码免受它的影响。
  • 不客气。要了解有关攻击向量的更多信息,关键思想是混合不同类型的字符串,并且某些字符可能具有干扰某些字符串的特殊含义。谷歌“跨站请求伪造”,你会看到很多例子。
【解决方案2】:

试试这个

<%= raw current_user_json.to_json %>

【讨论】:

  • 嗨@pkrawat1 感谢您的惊人回复,如果辅助方法未设置为输出 json,您的答案将是正确的。干杯,再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-03
相关资源
最近更新 更多