0

ターボリンクとjquery.turbolinksを使用するRails4アプリケーションがあります。また、jQueryの日付ピッカープラグインも使用します。

Railscastエピソード#196 Nested Model Formから、1つのフォームで複数のモデルを追加/編集するためにRyanBatesの手法を使用しています。

私の場合、世帯に関連する人を追加/編集しています。person_fields部分には、日付ピッカー(class = "datepicker"で入力された文字列)の使用を「試行」するbirthdateフィールドが含まれていますが、機能せず、クラスでフィールドをクリックしても日付ピッカーが表示されません。 '.datepicker'の。

ページとともに読み込まれる他のフォームでは、日付ピッカーは正常に機能します。ただし、このコードで動的に追加されるこのフォームの場合、日付ピッカーは表示されません。

パーシャルを挿入するリンクのコードは次のとおりです。

  def link_to_add_fields(name, f, association)
    new_object = f.object.send(association).klass.new
    id = new_object.object_id
    fields = f.fields_for(association, new_object, child_index: id) do |builder|
      render(association.to_s.singularize + "_fields", f: builder)
    end
  link_to(name, '#', class: "add_fields small round button success", data: {id: id, fields: fields.gsub("\n", "")})
 end

そして、パーシャルを挿入するためのコーヒースクリプト:

$('form').on 'click', '.add_fields', (event) ->
  time = new Date().getTime()
  regexp = new RegExp($(this).data('id'), 'g')
  $(this).before($(this).data('fields').replace(regexp, time))
  event.preventDefault()

そして、日付ピッカーのコーヒースクリプト:

$('.datepicker').datepicker()

どんな助けでも大歓迎です。

- - アップデート - -

Billy Monkの提案のおかげで、フィールドを追加するコードは次のようになりました。

$('form').on 'click', '.add_fields', (event) ->
  time = new Date().getTime()
  regexp = new RegExp($(this).data('id'), 'g')
  $(this).before($(this).data('fields').replace(regexp, time))
  event.preventDefault()
  $('.datepicker').datepicker()

そしてそれは動作します!とても有難い!許可され次第、回答を受け付けます。

4

1 に答える 1

2

新しいフィールドを追加するJavaScript関数で、追加された後に$('。datepicker')。datepicker()を追加します。日付ピッカーは、新しく追加された要素に自動的にバインドされません。

于 2013-02-15T21:36:45.490 に答える