4

私はもともとこれを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 メソッドを利用する独自のヘルパーの構築をいじくり回しています。ただし、これは非常にハックでエレガントではありません。これをより簡単にする、または別のより優雅なアプローチを可能にするものはありますか? 本質的に、私はできるようにしたい:

  1. リストの既存の脚の間またはリストの最後に脚を追加します
  2. 理想的には、ユーザーがフォームを保存するまでオブジェクトを DB に保存する必要はありません
  3. そしてもちろん、ソート可能なものや、acts_as_list が提供するその他の利点をフックできるようにするためです。

提案?

4

0 に答える 0