问题标签 [acts-as-list]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3443 浏览

ruby-on-rails - 如何使用 ActiveRecord 对深度嵌套的集合进行排序?

我正在构建一个音乐管理 Rails 应用程序,我的应用程序的用户将能够制作专辑的有序播放列表,并且每张专辑都有一个有序的歌曲列表。

本质上,这看起来像:

(我习惯使用歌曲和播放列表表中acts_as_listposition列来分别管理歌曲和播放列表的排序顺序。)

现在我想找到给定用户的所有歌曲列表(按顺序)。如果我将此范围添加到Song模型中:

我可以这样做,但是返回的记录没有按顺序保存。相反,我希望看到每首歌曲首先按其专辑的用户播放列表位置排序,然后按歌曲在该专辑中的位置排序。换句话说,如果用户想按顺序播放专辑 A、B 和 C,我正在寻找 A 中所有歌曲的数组(按专辑中的顺序),以及 B 中的所有歌曲(按顺序),加上 C 中的所有歌曲(按顺序)。

我已经在范围内尝试了几种顺序子句的排列,但没有一个具有在排序专辑的上下文中排序歌曲的预期效果。

0 投票
2 回答
3757 浏览

ruby-on-rails - 当使用 update_attributes 更新资源时,acts_as_list 是否应该自动重新排序项目?

我正在使用带有 rails 3.1 的acts_as_list 插件,每当我添加或删除资源时,现有位置都会被排序和更新。但是,当使用 update_attributes 更新资源的位置时,似乎不会发生重新排序,并且我可能会留下具有重复位置的资源。这是acts_as_list 的正确行为吗?

我已经寻求澄清,但关于这个插件的文档真的很有限。

在这个阶段我没有使用 javascript,位置只是通过一个具有适当限制范围的选择框来确定。

谢谢

0 投票
3 回答
2506 浏览

ruby-on-rails - 在多列上使用acts_as_list

我有一个可能独特的情况,我需要一个模型有两个不同的订单,具体取决于它加入的模型。示例如下:

所以基本上我想做的是有一个 Book 模型,它是两个列表的一部分,一个用于它出现的流派页面,一个用于它出现的作者页面。

acts_as_list似乎不支持使用 2 个位置列作为方法,例如move_to_top不允许您指定要移动到顶部的列表。

有没有人对我如何实现这一目标有任何建议?现在我在想我将不得不创建一个连接表,例如books_genres它有一个position列,但我真的不太热衷于此,因为这需要大量额外的表。

0 投票
1 回答
170 浏览

ruby - 循环遍历对象数组并找到具有位置编号的第一项

好的,所以我不知道该怎么说,但是:

我有一系列专辑,每张专辑都有很多图片。我正在使用 ruby​​ gemacts_as_list来允许用户对相册中的图像进行排序,因此每个图像都有一个位置。而排序的方法是在专辑图片和非专辑图片之间进行设置,并不是所有的专辑都会有一个位置为 1 的图片。

所以,我要做的是列出所有相册,然后只显示该相册中位置最早的图像。但是,没有找到第一个位置的方法。

这是我现在拥有的:

但这只是根据它在图像表中的位置而不是它的位置编号来找到相册中的第一张图像。

0 投票
1 回答
252 浏览

ruby-on-rails - 在路由中使用 ID 以外的东西

我有两个模型,书籍和章节。

我希望按他们在书中的顺序而不是他们的 ID 来访问章节

/书籍/章节标题/章节/1

是否建议这样做,因为我也希望能够重新排序章节。

我希望章节编号可以在列表中上下移动,acts-as-list但也可以通过它们的排序顺序访问它们。

0 投票
1 回答
3036 浏览

ruby-on-rails - 更新期间模型上的订购位置

我在我的产品模型上使用acts_as_list,并尝试制作它,以便您可以手动编辑位置。目前,如果我将产品 3 从位置 3 编辑到位置 1,它不会调整其他产品

示例:将产品从位置 3 移动到位置 1

ID 名称 位置
1 产品 1
2 产品 2
3 产品 3

将导致

ID 名称 职位
1 产品 1
2 产品 2
3 产品 1

但我需要它来

ID 名称 职位
1 产品 2
2 产品 3
3 产品 1

我得出的结论是我应该将代码添加到我的产品更新类中。这是我到目前为止所拥有的:

在这段代码中,我试图获取旧产品和新产品范围内的所有产品,然后增加所有产品的位置,但我的代码不起作用,似乎调用 old_product = Product.find_by_position_and_category_id (params[:position], params[:category_id]) 一直返回 nil,当它应该返回具有旧产品位置的产品时。

感谢您的帮助,如果我走在正确的轨道上,或者是否有更简单的方法,请告诉我。

0 投票
1 回答
382 浏览

ruby-on-rails - 创建自定义 move_up 路线和 move_down 动作/路线 Rails

我正在尝试创建两个带有向上和向下箭头的小按钮,并根据它对我的产品进行排序。我有一个名为 Product 的模型,并且正在使用acts_as_list 来跟踪位置。

我是否在我的控制器中做这样的事情来创建路由?

在我的产品控制器中

在我看来

但我做的不对。我不断收到错误

找不到 id=move_up 的产品

谁能帮我创建这种路由关系?

编辑:现在我收到错误

当你没想到时,你有一个 nil 对象!您可能期望有一个 Array 的实例。评估 nil.find 时发生错误

这是更多代码

查看代码

它似乎挂断的代码在这里

当它执行查找时。谢谢!

0 投票
3 回答
1651 浏览

ruby-on-rails - Rails 3.1 - 没有acts_as_list的拖放重新排序?

我想在我的应用程序中允许拖放重新排序功能。我知道我可以使用acts_as_list 来做到这一点,并且已经遵循了Rails 食谱。但是,由于我的应用程序的构建方式,我想要重新排序的项目不能使用acts_as_list,因为它从另一个模型中的嵌套项目继承了它的位置字段。当我使用acts_as_list时,这似乎覆盖了位置值,这意味着父模型中设置的顺序丢失,子位置是随机的。

所以我想我有两个问题:

我可以在没有 Acts_As_List 的情况下构建 Ajax 样式的拖放重新排序工具吗?

或者

我可以在模型中添加某种 if 语句以在创建时禁用acts_as_list 但在所有其他时间启用?类似的东西(英文而不是代码):

0 投票
1 回答
273 浏览

ruby-on-rails - content_tag_for 没有传递正确的参数

我正在尝试使用 jquery UI 和acts_as_list 创建一个可通过拖放进行排序的表。

如果我使用 ul/li 元素,它可以正常工作,但我想使用表格(因为它看起来好多了)。但是,当使用 table/tr/td 时,它不会将更新的排序传递给 javascript 可排序函数,即使在我拖放以重新排序后,它也总是传递原始排序。有没有办法使用 table 元素而不是 ul/li 元素来传递更新的排序?表支持排序吗?

编辑:

0 投票
1 回答
498 浏览

ruby-on-rails - 我可以使用acts_as_list 在一列中创建多个列表吗?

我正在尝试添加acts_as_list到我的数据库中的现有playlists表中,该表存储我的用户可能创建的所有播放列表。目标是允许用户对自己的播放列表进行排序。

此迁移将为表中的播放列表设置默认位置,但该位置将在全局上下文中设置(例如,position对于其中包含 500 个播放列表的表,该列将按 1-500 排序):

这个顺序会有问题,因为将项目的位置从 500 移动到 499 不一定反映从用户的角度来看的任何变化(因为他们可能有具有 50、70、100position和 500 的播放列表)。

相反,我想在每个用户上下文中为表中的每个播放列表设置一个位置(例如,假设每个用户有 5 个播放列表,该position列将有多个播放列表实例,每个用户按 1-5 排序)。

这是否可能,如果可以,我将如何修改我的迁移来实现这一点?