gpt4 book ai didi

ruby-on-rails - 必须在我的验证/错误消息之间进行选择,或者通过其他属性对事物进行排序

转载 作者:行者123 更新时间:2023-12-03 07:57:40 25 4
gpt4 key购买 nike

我将尽力解释这一点,并且花了很多时间来确保这不是重复的,但是如果我忽略了某些内容,我深表歉意。我遇到的问题非常简单,它涉及在使用茧处理嵌套属性时可以传递simple_fields_for的参数数量。在没有手动添加一些代码来创建错误通知的情况下,我什么都没有得到,所以我不得不像这样设置代码:

类(class)模式

class Course < ApplicationRecord
has_many :learning_objectives, dependent: :destroy, inverse_of: :course
end

学习目标模型
class LearningObjective < ApplicationRecord
belongs_to :course, touch: true
scope :sorted, -> { order(:sort) }
end

使用 f.error_notification的表格
= simple_form_for(@course) do |f|
= f.error_notification
.row
.col-md-12 Learning Objectives
= f.simple_fields_for :learning_objectives, f.error_notification do |objective|
= render 'learning_objective_fields', f: objective
= link_to_add_association 'Add Another Objective', f, :learning_objectives, class: 'btn btn-default btn-sm', data: { association_insertion_node: '.objectives', association_insertion_method: :append }

部分学习目标
.nested-fields
.table
.row
.col-md-8
= f.input :name, label: false
.col-md-2
= f.input :sort
.col-md-2.spaced-out
=link_to_remove_association 'Remove Objective', f, class: 'btn btn-danger btn-xs'

这很好地在嵌套字段上获取必要的通知。但是,我以前在 f中使用 simple_fields_for,就像在这里看到的那样:

使用 f.object.learning_objectives.order(:sort)的表格
= simple_form_for(@course) do |f|
= f.error_notification
.row
.col-md-12 Learning Objectives
= f.simple_fields_for :learning_objectives, f.object.learning_objectives.order(:sort) do |objective|
= render 'learning_objective_fields', f: objective
= link_to_add_association 'Add Another Objective', f, :learning_objectives, class: 'btn btn-default btn-sm', data: { association_insertion_node: '.objectives', association_insertion_method: :append }

当我删除该排序时,它又恢复为原来的排序方式,这并不理想。因此,问题在于我一次只能使用一个参数,而且我不确定是否有可能使用一种方法来为嵌套属性的 f对象使用多个参数。

也许有一种方法可以简单地做到这一点,我也将用相同的标题交叉堆放堆栈,以查看他们是否有建议,以防万一这太具体了而在这里引发问题。非常感谢您提供的任何建议或指示,也感谢您的宝贵力量!

最佳答案

真奇怪除非我感到困惑,否则simple_fields_for的第二个参数只能是嵌套项的数组,如果没有给出,它将仅检查关系/关联。因此,我不明白传递f.error_notification(错误的直观表示)将如何工作,除非fields_for因为它是字符串而不是可枚举的内容而跳过了它。

其次:如果您调用order,它将尝试使用sql进行订购,因此它实际上只会显示数据库中存储的项目。如果您只是尝试对数组进行排序,那么它将按预期工作。例如。就像是

 f.object.learning_objectives.to_a.sort{|x,y| x.sort <=> y.sort}

关于ruby-on-rails - 必须在我的验证/错误消息之间进行选择,或者通过其他属性对事物进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52336886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com