我有一个 Rails 应用程序,我正在尝试使用 acts_as_list 插件设置可排序列表。数据库中的位置字段正在更新,但是在呈现页面时,不考虑顺序。我想我是在寻求帮助。
这是我的模型...
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
还有给我列表的草率 View 代码...
<% @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 对象的位置值更新,页面实际上正确显示重新排序。问题是在页面重新加载时,它默认返回到它感觉的任何顺序。我认为它默认为订单的问题 id 而不是 question_membership 位置,但我不确定。
关于如何通过 QuestionMembership 的位置字段在初始渲染上实际排序有什么想法吗?
最佳答案
最终版本:
class QuestionMembership < ActiveRecord::Base
belongs_to :form
belongs_to :question
acts_as_list :scope => :form
end
class Form < ActiveRecord::Base
has_many :question_memberships, :order => "position"
has_many :questions, :through => :question_memberships
end
class Question < ActiveRecord::Base
has_many :question_memberships, :order => "position"
has_many :forms, :through => :question_memberships
acts_as_list :scope => :form
end
关于ruby-on-rails - 将 acts_as_list 与 has_many 一起使用 :through in rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/664807/