Я постараюсь объяснить это как можно лучше, и я потратил много времени, пытаясь убедиться, что это не дубликат, а извинения, если я что-то упустил.Проблема, с которой я столкнулся, довольно проста и касается количества аргументов, которые я могу передать simple_fields_for
при работе с вложенными атрибутами с помощью кокона.Не добавляя вручную некоторый код для создания уведомления об ошибке, я ничего не получил от него, поэтому мне пришлось настроить код следующим образом:
Модель курса
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
вложенных атрибутов.
Возможно, есть способ сделать это просто, и я также сделаю кросс-пост для переполнения стека с тем же заголовком, чтобы посмотреть, есть ли у них предложения, если это слишком конкретно, чтобы поднять проблему здесь.Большое спасибо за любой совет или направление, которое вы могли бы предложить, и спасибо за великолепную жемчужину!