我正在使用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}…)