- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 rails 3.1 中使用 acts_as_list 插件,每当我添加或删除资源时,现有位置都会被排序和更新。但是,当使用 update_attributes 更新资源的位置时,似乎没有发生重新排序,我可能会留下具有重复位置的资源。这是 acts_as_list 的正确行为吗?
我搜索了相关说明,但有关此插件的文档非常有限。
我在这个阶段没有使用 javascript,位置只是用一个范围适当限制的选择框来确定。
谢谢
最佳答案
更新对象时,插件中没有任何内容会被调用。您必须使用 acts_as_list 提供的内置方法手动执行此操作。
此插件的 ruby 文件只有 300 行且易于理解,它会告诉您有关 acts_as_list 的所有信息...老实说,内容并不多:https://github.com/swanandp/acts_as_list/blob/master/lib/acts_as_list/active_record/acts/list.rb
要手动执行此操作,只需获取位置高于当前项目的所有项目并递增每个项目。这就是我在我的应用程序中处理它的方式(不使用 acts_as_list 但概念在那里)。这是订购论坛的示例:
forum.rb
PositionOptions = [["First Forum", "-1"]] + all.map{|forum| ["After #{forum.subject}", forum.position]}
attr_accessor :position_before
before_save :set_position, :if => "position_before.present?"
def set_position
self.position = position_before.to_i + 1
end
after_save :do_positions, :if => "position_before.present?"
def do_positions
Forum.where('position >= ? AND id != ?', position, id).order('position, updated_at DESC').all.each_with_index do |forum, index|
forum.update_attribute('position', position + index + 1)
end
end
查看
<% position_options = Forum::PositionOptions %>
<%= f.select :position_before, position_options.reject {|forum| @forum.position == forum[1]}, :selected => position_options[position_options.index {|p| p[1] == @forum.position} - 1][1] %>
也许不是最好的方法,但这是我能想到的最好的方法。如果您计划经常更新位置,或者如果有很多对象被定位,它可能会太昂贵......但它适用于像论坛这样的小型集合。
关于ruby-on-rails - 当使用 update_attributes 更新资源时,acts_as_list 是否应该自动重新排序项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7767457/
obj.update_attribute(:only_one_field, 'Some Value') obj.update_attributes(field1: 'value', field2: '
我正在尝试在某个操作后更新对象的属性。如果我使用 update_attribute,一切都会正确保存到数据库中,但我有很多需要更新的东西,所以它变得非常重复。 这工作正常: order.update_
所以我有一个编辑页面,上面有大量的可编辑字段......简单的更新......@patient.update_attributes(params[:patient]) ……一切都很好,除了…… 在这
我在以多级嵌套形式更新数据时遇到问题。我使用部分来包含创建和更新 View 的所有字段,并且我在创建时没有问题。只有更新。 基本上结构(简化)是: user has_one profile profi
提交表单后,调试功能中会显示正确的自定义参数,但进入控制台时会显示默认参数。 Controller def update current_user.update_attributes(para
这个问题在这里已经有了答案: 9年前关闭。 Possible Duplicate: Rails update_attributes without save? 从根本上说,我想做一个 ActiveRe
我的模型描述了段落和图像,其中每个段落都有_许多图像。对于图像处理,我使用回形针。对于批量分配,我将图像用作段落的nested_attributes。相关代码: 模型/段落.rb class Para
我有一个用户数据库作为User(id:integer,username:string,created_at:datetime,updated_at:datetime,password_digest:s
基本上,警报和更新之间存在一对多关系。许多更新属于一个警报。现在我的问题是我无法更新数据库中的任何记录。我可以毫无问题地创建新记录。 Rails 记录器将实际记录打印到日志中。正如您从日志文件中看到的
如果一个模型在本地更改了一个属性,然后又将其改回,ActiveRecord 不会将更改发送到数据库。这对性能非常有用,但如果其他东西更改了数据库,并且我想将其恢复为原始值,则更改不会生效: model
我对 Rails 很熟悉,但在 JavaScript 和 Ajax 方面却完全迷失了。 我试图做到这一点,以便当用户单击列表中的某个项目时,会在该项目上使用 Ajax 调用 update_attrib
我在使用 update_attribute 时遇到问题。我只想更新我指定的属性,但另一个属性是(在我无权访问的不同位置更改的属性)。 这是一个简化的版本: user = User.find(1) p
为什么会出现此错误?我没主意了。 # 的未定义方法“update_attributes” 代码: exists = Vote.where(comment_id: @comment.id).exists
我想在保存事件之前进行检查,这样我就可以在每次更新特定字段时发出警报。我尝试使用“changed”来检测它,但是 update_attributes 简化了数据库验证,所以我无法使用 changed?
所以我有一个用户模型,包括登录名、电子邮件地址、密码、密码确认、姓名、头像(图片)等。前 5 个有验证,基本上说明所有 5 个都需要存在才能创建一个新模式。 但是,这会给我带来更新方面的问题。 我有一
我遇到了一个奇怪的事情。我有一个模型 GuardianUpdate,它的字段“read”是一个 bool 值。当我在记录上调用 update_attribute(:read, true) 时,rail
我发生了多态关联关系,当我通过它检索记录时,例如: hour = my_model.find( keeper_id ).hours.where( "day = ?", day_index ) 然后尝试
我想知道在 update_attributes 语句之后更新了哪些字段。我正在过滤可更新的参数并从 params[:model] 中删除那些我不想更新的参数.现在,一些新的可更新参数可能与旧参数具有相
def update @album = Album.find(params[:id]) if @album.update_attributes(params[:album]) redi
这似乎是一个愚蠢的问题,但我无法在任何地方找到答案! 有没有可能update_attributes()并跳过验证,如 save(validate: false) ? 我有一个很长的表格,有些冗长tex
我是一名优秀的程序员,十分优秀!