Рассматриваемое приложение использует jQuery для выполнения запросов ajax, чтобы заполнить зависимые поля выбора. Действие моего контроллера Responds_to: JS, и в файле .js.erb у меня есть:
str += '<%= f.select field.name, list, {}, { :class => "list", :multiple => "multiple", :style => "size:8; width:100px;" } %>';
"список" заполняется так:
str += '<% list = @validation_model.lookup([field], @lookup) %>';
Я .append () передаю это в div. в конце файла шаблона .js.erb. Тем не менее, когда «список» содержит более одного значения, синтаксический анализ шаблона не удается. Если он пуст или содержит только одно значение, синтаксический анализ выполнен успешно.
Это ошибка, с которой я сталкиваюсь, или я делаю что-то не так? Обратите внимание, что это скорее ошибка синтаксического анализа, чем ошибка времени выполнения, поэтому я не смог точно определить, в чем проблема - в Firebug или Safari Dev.
ОБНОВЛЕНИЕ: Вот полный код файла .js.erb. Я заменил переменную list на встроенную логику, чтобы получить массив.
str = '<% fields_for :mapapps do |f| %>';
<% for tf in @tag.tag_fields.find(:all, :order => :sequence) %>
<% field = tf.parentfield %>
<% if !@lookup.include?(field) %>
$("#<%= field.name %>").remove();
<% else %>
<% next %>
<% end %>
str += '<div id="<%= field.name %>" class="floater">';
str += '<label for="mapapps_<%= field.name %>"><%= field.label %></label>';
str += '<%= f.select field.name, @validation_model.lookup([field], @lookup), {}, { :class => "list", :multiple => "multiple", :style => "size:8; width:100px;" } %>';
str += '</div>';
<% end %>
str += '<% end %>'
$("#mfrsdiv").append(str);