У меня есть немного необычное требование, которое означает, что я должен уважать положения act_as_list при добавлении / удалении вложенных моделей.
class Journey < ActiveRecord::Base
has_many :legs, :dependent => :destroy
accepts_nested_attributes_for :legs, :allow_destroy => true
end
class Leg < ActiveRecord::Base
belongs_to :journey
acts_as_list :scope => :journey
end
Не думаю, что это странно - у ног моего путешествия есть пункт назначения, и их порядок определяет начальную и конечную точки.
Конечно, это означает, что я не могу использовать стандартные помощники f.link_to_add и f.link_to_remove, так как это помощники уровня формы, и я хочу, чтобы помощник сидел с вложенной формой. Я могу справиться с JS, чтобы обновить позиции последующих этапов без проблем, но мне было интересно, есть ли уже установленный способ сделать это, или мне нужно разветвиться, построить новых помощников и затем выдать запрос на извлечение? Я думал что-то вроде того, чтобы быть в состоянии сделать:
<%= f.link_to_add_inline "Add leg", :legs, :after => current_leg.position %>
Мысли
С тех пор я возился с созданием своих собственных помощников, которые будут сохранять форму обратно всякий раз, когда я захочу добавить ногу, и использую методы act_as_list insert_at_position. Это выглядит очень нахально и не очень элегантно. Есть ли что-нибудь, что могло бы облегчить это или другой более изящный подход. По сути, я хочу иметь возможность: