Ich habe eine App "rails", die ich mit sortierbaren Listen mithilfe des Plugins "acts_as_list" einrichten möchte. Das Positionsfeld in der Datenbank wird aktualisiert, aber wenn die Seite gerendert wird, wird die Reihenfolge nicht berücksichtigt. Ich suche nach Hilfe, denke ich.Verwenden von "acts_as_list" mit "has_many: through in rails"
Hier sind meine Modelle ...
class QuestionMembership < ActiveRecord::Base
belongs_to :form
belongs_to :question
acts_as_list
end
class Form < ActiveRecord::Base
has_many :question_memberships
has_many :questions, :through => :question_memberships
end
class Question < ActiveRecord::Base
has_many :question_memberships
has_many :forms, :through => :question_memberships
acts_as_list
end
Und die schlampig Ansicht Code, der mir die Liste gibt ...
<% @form.question_memberships.each do |qm| %>
<% q_id = "question_#{qm.id}" %>
<li class="question" id=<%= q_id %> >
<div style="color: #999; font-size: 8pt">
<%=h qm.question.content %>
</div>
</li>
<%= draggable_element(q_id, :revert=>true) %>
<% end %>
Die Drag & Drop arbeitet für die Nachbestellung. Der Positionswert wird im DB für die QuestionMembership-Objekte aktualisiert, und die Seite zeigt die Neuordnung korrekt an. Das Problem ist, dass beim erneuten Laden der Seite die Standardeinstellungen wiederhergestellt werden. Ich denke, es ist standardmäßig die Frage ID für die Bestellung anstelle der Frage_Mitgliedschaft Position, aber ich bin mir nicht sicher.
Irgendwelche Ideen auf, wie ich es eigentlich bestellt auf dem Anfang durch das Positionsfeld des QuestionMembership machen machen?
Ist in diesem Fall das Positionsattribut für das Fragenmodell und das Formularmodell? – Paul
Ja, das Positionsattribut ist nur eine Spalte in der Join-Tabelle. –