0

У меня есть динамические полей выбора, на мой взглядПолучение массива закрытия вариант тегов после опций частичными содержащих

../diys/_form.htmlerb

 ... 
     <%= f.fields_for :attached_vehicles do |av| %> 
     <p>Select make</p> 
     <%= av.select :make, options_for_select(@makes.collect { |make|[make.make_name, make.id] }, 0), {}, { id: 'makes_select' } %><br> 
     <p>Select model</p> 
     <%= av.select :model, (render "make_models/make_model"), {}, { id: 'models_select' } %><br> 
     <% end %> 
     ... 

который запускает кофе скрипт на смену

../assets/javascripts/diys.coffee

$ -> 
    $(document).on 'change', '#makes_select', (evt) -> 
    $.ajax 'update_make_models', 
     type: 'GET' 
     dataType: 'script' 
     data: { 
     make_id: $("#makes_select option:selected").val() 
     } 
     error: (jqXHR, textStatus, errorThrown) -> 
     console.log("AJAX Error: #{textStatus}") 
     success: (data, textStatus, jqXHR) -> 
     console.log("Dynamic make select OK!") 

, который запускает

../views/diys/update_make_models.coffee

$("#models_select").empty() 
    .append("<%= escape_javascript(render "make_models/make_model") %>") 

, которая оказывает частичное

../views/make_models/make_model.html.erb

<%= @models.collect do |models| %> 
    <option val="<%= models.id %>"><%= models.make_model_name %></option> 
<% end %> 

и все работает отлично, за исключением того, что я получаю массив закрывающих тегов опций внутри элемента select после элементов опций like this.

Вот также некоторые части из моих

../controllers/diys_controller.rb

... 
def update_make_models 
    @models = MakeModel.where("make_id = ?", params[:make_id]) 
    respond_to do |format| 
     format.js 
    end 
end 

def new 
    @diy = Diy.new 
    @step = @diy.steps.new 
    @diy.attached_vehicles.new 
    @step.add_images_to_steps.new 
    @makes = Make.all 
    @models = MakeModel.where("make_id = ?", Make.first.id) 
end 
... 
+0

Почему вы запрашиваете как скрипт, а не html? – charlietfl

ответ

2
<%= @models.collect do |models| %> 
    <option val="<%= models.id %>"><%= models.make_model_name %></option> 
<% end %> 

Должно быть

<% @models.collect do |models| %> 
    <option val="<%= models.id %>"><%= models.make_model_name %></option> 
<% end %> 

При использовании <% = %> он печатает результат в файле шаблона. Удостоверьтесь, чтобы это не касалось ваших петель, или вы получите эти артефакты.

Вот некоторые great documentation на тегах ERB.

+0

Ох, да! Благодаря! –