在 Rails 中使用 acts_as_list 和 has_many :through

2024-01-31

我有一个 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

以及给我列表的草率视图代码......

<% @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 位置,但我不确定。

关于如何通过问题成员资格的位置字段使其在初始渲染上实际排序有什么想法吗?


最终版本:

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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Rails 中使用 acts_as_list 和 has_many :through 的相关文章

随机推荐