Javascript 解析index.html.erb文件中脚本标记内的ruby哈希

Javascript 解析index.html.erb文件中脚本标记内的ruby哈希,javascript,ruby-on-rails,ruby,Javascript,Ruby On Rails,Ruby,如何解析index.html.erb文件中标记中的ruby哈希 控制员: @full_calendar_options = { theme: true, header: { left: 'month,agendaWeek,agendaDay', center: 'title', right: 'prev,next' }, defaultView: 'agendaWeek', buttonIcons: { prev: 'calendar-left-arrow', next: 'calendar-r

如何解析
index.html.erb
文件中
标记中的ruby哈希

控制员:

@full_calendar_options = { theme: true, header: { left: 'month,agendaWeek,agendaDay', center: 'title', right: 'prev,next' }, defaultView: 'agendaWeek', buttonIcons: { prev: 'calendar-left-arrow', next: 'calendar-right-arrow' } }
在index.html.erb中,这将产生javascript语法错误:

<script>
var options =  <%= @full_calendar_options %>;
当我用字符串包装ruby捕获时,没有出现错误:

var options =  '<%= @full_calendar_options %>';

这是一个编码字符串。它不是JSON,因此我无法将其解析为对象文本。我试图用JavaScript获取对象文本。实现这一点的最佳方法是什么?

您可能希望将此输出转换为JSON,因为它看起来像是将其分配给JavaScript变量。在这种情况下:

var options =  <%= @full_calendar_options.to_json %>
var选项=

var期权=;

为什么我也必须使用inspect?为什么json不起作用呢?哦,你说得对
to_json
在没有
inspect
的情况下可以正常工作。我认为可能还需要html\u safe:@full\u calendar\u options.to_json.html\u safe出于好奇,Rails为什么默认情况下会逃逸数据?这不是一种不便吗?谁会想要这样的数据?{:theme=true,:header=这是一个很好的解释,原因是:基本上,因为其中的任何内容都可能是不安全的用户输入,包括恶意javascript,因此默认情况下,它会转义以避免恶意。
var options =  '{:theme=&gt;true, :header=&gt;{:left=&gt;&quot;month,agendaWeek,agendaDay&quot;, :center=&gt;&quot;title&quot;, :right=&gt;&quot;prev,next&quot;}, ...
var options =  <%= @full_calendar_options.to_json %>
<script>
var options =  <%= raw @full_calendar_options.to_json %>;