在Javascript中使用select2迭代ruby对象

Iterating over a ruby object in Javascript using select2

本文关键字:迭代 ruby 对象 select2 Javascript      更新时间:2023-09-26

我正在使用select 2 gem的rails应用程序。我有选择2工作,但我需要能够输入正确的数据到函数的数据部分,要做到这一点,我想迭代一个名为MagazineStation的对象。我试了很多不同的东西,但都不行。因此,在函数的数据部分,我想使用ruby遍历MagazineStation对象,输入id和名称。

<head>
  <script>
    $(document).ready(function() { 
      $("#e11").select2({
        placeholder: "Select a Station",
        allowClear: true,
        multiple: true,
        data: [{id: 0, text: 'story'},{id: 1, text: 'bug'},{id: 2, text: 'task'}]
      });
    });
  </script>
</head>
<input id="e11">

你可以像这样用ERB输出ruby到你的javascript中:

<%= MagazineStation.all.map { |ms| { id: ms.id, text: ms.name } }.to_json %>

.to_json部分是将数组字符串输出到模板中的关键(并且以javascript友好的方式)。

但是你需要确保你把它放入你的页面内的脚本中。因此,它可能更容易通过创建一个常规的选择,例如一个collection_select助手,然后把数据转化为页面加载select2元素。

您可以这样做。迭代.erb文件中的Ruby对象。

data: [                
 <% @Magzinestation.each do |t|%>    
    {"<%=raw t[0] %>",<%=raw t[1]%>},
  <%end%>]

脚本将data[]替换为data[{data 1}, {data 2}…)