1

RailsAdminで、モデルの1つにカスタムのネストされたフォームを作成して、組み込みのウ​​ィジェットで許可されているよりも多くの機能を追加しようとしています。

私はhas_manyTechSpecsを持つプロジェクトを持っています。rails_admin.rb初期化子には次のものがあります

config.model Project do
  edit do
    configure :tech_specs do
      partial 'tech_specs_field'
    end
  end
end

_tech_specs_field.html.haml(私は個人的にerbの方が快適ですが、hamlを使用しない限り、「nil:NilClassのメソッドsafe_concatがありません」という非常に奇妙なエラーが発生します)

= form.fields_for(field.name) do |nested_form|
  = render :partial => 'spec', :locals => {:nested_form => nested_form}

- add = "<i class='icon-plus icon-white'></i> New Tech Spec".html_safe
= form.link_to_add add, field.name, { :class => 'btn btn-info' }

ページの下部にある非表示のdivで、ページに生成された新しいtech_specsの青写真を実際に見ることができますが、[NewTechSpec]ボタンをクリックしても何も起こりません。_spec.html.hamlの中には、text_fieldsとhidden_​​fieldsの束に加えて、削除リンク(これは機能します)があります。

私は2つのことを疑問に思っています:

1)JSで何が起こっているかを追跡し、それまたは私のパーシャルを修正して、bbenezech-nested_form gem(RailsAdminが依存する)からRailsAdminネストされたフォームを操作するにはどうすればよいですか?

2)RailsAdminが使用するもの以外に、パーシャルをhamlにする必要があり、管理フォームを生成する大規模なチェーンと互換性がない理由についてのアイデアはありますか?

4

1 に答える 1

2

これは良い最終的な答えではありませんが、ui.jsで次のJSハックで問題を回避することができました

  var oldNestedFormEvents = window.nestedFormEvents.insertFields
  window.nestedFormEvents.insertFields = function (content, assoc, link) {
    if ($(link).closest('.no_tabs').length > 0) {
      return $(content).insertBefore(link);
    } else {
      return oldNestedFormEvents(content, assoc, link);
    }
  }

ネストされたフォームを使用するカスタムパーシャルでは、「no_tabs」クラスをそれらを含むdivに追加し、bbenezech-nested_formsの元のinsertFieldsメソッドを再利用するだけです。

于 2012-04-25T13:49:48.543 に答える