J'ai une application rails J'essaie de configurer des listes triables en utilisant le plugin acts_as_list. Le champ de position dans la base de données est mis à jour, mais lorsque la page est rendue, l'ordre n'est pas pris en compte. Je cherche de l'aide, je suppose.Utilisation de acts_as_list avec has_many: through in rails
Voici mes modèles ...
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
Et le code de la vue bâclée qui me donne la liste ...
<% @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 %>
Le glisser-déposer fonctionne pour la remise en ordre. La valeur de position est mise à jour dans la base de données pour les objets QuestionMembership et la page affiche la réorganisation correctement. Le problème est que lors d'un rechargement de page, il revient par défaut à l'ordre dans lequel il se sent. Je pense que c'est par défaut à la question id pour l'ordre au lieu de la position d'accession à la question, mais je ne suis pas sûr.
Avez-vous des idées sur la façon dont je peux le faire réellement commander sur le rendu initial par le champ de position de QuestionMembership?
dans ce cas, est l'attribut de position sur le modèle de question et le modèle de formulaire? – Paul
Oui, l'attribut position est juste une colonne sur la table de jointure. –