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.
InformationsquelleAutor Drew | 2013-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
escape_javascript
zu entkommen Träger gibt, single-und double-quotes, die generiert durchoptions_from_collection_for_select
.Sehe ich keine anderen Probleme, außer das hinzufügen von Aufruf
escape_javascript
. Bitte versuchen Sie die folgenden in Ihrem js.erb:Ja, dort gehen Sie, ich habe aktualisiert mein Antwort hinzufügen von Anführungszeichen.
Hast du einen github-repository? Vielleicht für schiene 4?
Dank seiner Werke.....
j ist auch ein alias für escape_javascript
InformationsquelleAutor vee