Update-wählen Sie tag dynamisch mit ajax in rails

Habe ich zwei dropdowns in Sicht ist, und ich bin versucht, zu aktualisieren, die zweite Drop-down-Optionen basierend auf dem ausgewählten Wert aus dem ersten dropdown-Menü.

Ich bin mir bewusst, Railscasts zu diesem Thema, aber ich möchte Sie nicht verwenden die gruppierten Sammlungen; Die Gründe HIERFÜR sind in Erster Linie, dass der Benutzer kann wählen Sie aus einer dropdown-Liste auswählen, oder die andere, und die Ergebnisse entsprechend gefiltert, die zweite dropdown - nur filtern Ihre Optionen aus, wenn ein Wert aus dem ersten dropdown ausgewählt ist.

Meine Frage ist, wie kann ich das wieder Auffüllen der select_tag-Optionen, von einem js.erb-Datei?

form

  <%= form_tag("filter", :id => "filter_form", :method => "post") do %>
      <label for="company_id" class="company">Company</label><%= select_tag(:company_id, options_from_collection_for_select(Company.all.order(:name), :id, :name), :prompt => "All Companies") %>
      <label for="product_id" class="product">Product</label><%= select_tag(:product_id, options_from_collection_for_select(Product.all.order(:name), :id, :name), :prompt => "All Products") %>
  <% end %>

js.Kaffee

  $('#company_id').change( ->
    sendFilterForm()
  )

sendFilterForm = ->
  $.get($('#filter_form').attr('action'), $('#filter_form').serialize(), 'script')

controller

@filterProducts = true
@products = Product.where(company_id: params[:company_id]).order(:name)

js.erb

<% if @filterProducts  %>
    $('#product_id').html(<%= options_from_collection_for_select(@products, :id, :name) %>);
<% end %>

Damit der Letzte Teil ist natürlich ganz falsch, aber das ist das Konzept von, was ich versuche zu tun. Was ist der richtige Weg, um dies zu erreichen? Ich bin offen, überarbeiten diese, wenn nötig, jede Hilfe ist willkommen.

Hast du einen github-repository? Vielleicht für schiene 4?

InformationsquelleAutor Drew | 2013-07-10

Schreibe einen Kommentar