ruby-on-rails - 将 acts_as_list 与 has_many 一起使用 :through in rails

标签 ruby-on-rails ruby ajax

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

相关文章:

ruby-on-rails - 获取字符串的特定部分

ruby-on-rails - 使用 pluginaweek 的 state_machine,我可以在事件期间引用 activerecord 对象吗?

ruby - 如何在ruby中对文件进行排序

javascript - 重定向 Url 不工作并得到 No 'Access-Control-Allow-Origin' header Error

jQuery 不会对 Rails 中通过 AJAX 渲染的部分起作用

html - 如何在 ERB 元素中包含 id(或类)

ruby-on-rails - 使用我的选项的 authlogic auto_register 功能

ruby-on-rails - 从 Bash -> Docker 按名称 -> Ruby -> 清除缓存

mysql - rails : Display Maintenance Page if No Database Connection Available

java - 项目名称被附加到输出编写器