私はもともとこれをnested_formの問題として投稿しましたが、洞察はありませんでした。詳細はこちら: https://github.com/ryanb/nested_form/issues/66
要約:
ネストされたモデルを追加/削除するときに、acts_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 %>
考え?
それ以来、足を追加したいときはいつでもフォームを保持し、acts_as_list insert_at_position メソッドを利用する独自のヘルパーの構築をいじくり回しています。ただし、これは非常にハックでエレガントではありません。これをより簡単にする、または別のより優雅なアプローチを可能にするものはありますか? 本質的に、私はできるようにしたい:
- リストの既存の脚の間またはリストの最後に脚を追加します
- 理想的には、ユーザーがフォームを保存するまでオブジェクトを DB に保存する必要はありません
- そしてもちろん、ソート可能なものや、acts_as_list が提供するその他の利点をフックできるようにするためです。
提案?