私は、レールアプリを持っています。私は、acts_as_listプラグインを使用してソート可能なリストを設定しようとしています。 db内のpositionフィールドが更新されていますが、ページがレンダリングされると、その順序は考慮されません。私はいくつかの助けを探しています。ここでacts_as_list with has_many:through in rails
は私のモデル...
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
、私にリストを与えるずさんなビューのコードです...
<% @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 %>
ドラッグ&ドロップは、並べ替えのために動作します。位置値はQuestionMembershipオブジェクトのDB内で更新され、実際にページには再注文が正しく表示されます。問題は、ページのリロード時に、デフォルトの状態に戻り、どのような順序になっているかということです。私はそれがquestion_membershipの代わりにorderのquestion idにデフォルト設定されていると思うが、わからない。
QuestionMembershipの位置フィールドで最初のレンダリングで実際に注文する方法についてのアイデアはありますか?
は、質問モデルとフォームモデルの位置属性ですか? – Paul
はい、position属性はjoinテーブルの単なる列に過ぎません。 –