Ich habe eine Reihe von OrtenWie behalte ich die Reihenfolge der Assoziationen in Rails3?
locations = ["california", "new york", "florida"]
I ein Modell namens foobar haben, dass has_many :places
. das Place
Modell belongs_to :foobar
und hat eine relevante Spalte - name:string
.
Ich habe ein verschachteltes Formular, das es mir erlaubt, Standorte auszuwählen, die für die Foobar gelten. die Optionen anbieten zu können, habe ich die Orte, bauen auf der Grundlage meiner Standortliste in meinem Controller:
class FoobarController < ApplicationController
def edit
@foobar = Foobar.find(params[:id])
APP_CONFIG['locations'].each do |location|
@foobar.places.find_by_name(location) || @foobar.places.build(:name => location)
end
end
end
Das funktioniert fast ohne ein Problem. Der Grund, warum ich die Editiermethode einschließe, ist, dass dies die problematische ist. Die Liste der Orte, die DOES enthält, wird angezeigt, aber die Foobar
Orte, die bereits vorhanden waren, werden oben angezeigt.
Beispiel Zeit! :)
ich eine neue
Foobar
. In meinem Formular scrolle ich nach unten und sehe die Optionen "Kalifornien", "New York" und "Florida". Ich überprüfe "Kalifornien" und "Florida" und erstellen Foobar.Als nächstes gehe ich Foobar bearbeiten. Wieder, ich scrollen Sie nach unten zu den Orten, und ich sehe , dass ich zwei Optionen überprüft. Das ist groß, außer dass die Bestellung in , die die Optionen erscheinen, ist "California", "Florida", "New York" - Orte überprüft sind auf der Oberseite.
Wie kann ich die Reihenfolge der Orte von meinem ursprünglichen Array beibehalten?
Danke!
Update: der Ansicht Code:
<%= f.fields_for :places do |place| %>
<div class="place">
<%= place.hidden_field :name %>
<%= place.check_box :checked %>
<%= place.label :checked, place.object.name %>
</div>
<% end %>
Der Code, den Sie eingefügt haben, steuert nicht direkt die Reihenfolge von irgendetwas. Bitte posten Sie Ihren Ansichtscode. – jdl
hat den Code gepostet. Vielen Dank! –