2

こんにちは、ネストされたフィールドの作成に繭を使用しています。

コクーン: https://github.com/nathanvda/cocoon

ネストされたフォーム/フィールドは 100% 機能しているため、1 つのネストされたフィールドに jQuery オートコンプリートを統合しようとしました。

私はこの要点(map7から分岐)に従っています:https://gist.github.com/xirukitepe/5132317

オートコンプリートは最初/親フィールドで機能していますが、後続のネストされた他のフィールドでは機能していません。

これが私のコードです:

まず、オートコンプリート コントローラーを作成しました。

class AutocompleteController < ApplicationController
    def categories
     if params[:term]
       like  = "%".concat(params[:term].concat("%"))
       categories = Category.where("lower (categories.code) LIKE lower(?)", like)
     else
       categories = Category.all
     end
     list = categories.map {|u| Hash[id: u.id, label: u.code, name: u.code]}
     render json: list            
   end
 end

次にitem.rbで

attr_accessor と 1 つのメソッドを追加しました...

attr_accessor :category_code
def category_code
          category.code if category_id
end

items_controller.rb

def category_code=(code)
   category= Category.find_by_code(code)
   if category       
     self.category_id = category.id
   else              
     errors[:category_code] << "Invalid name entered"
   end               
end                 

def category_code      
   Category.find(category_id).name if category_id
end

ここに私のコーヒーファイルがあります:

$ ->
  $('input.x').autocomplete
  source: "/autocomplete/categories"
  select: (event,ui) -> $("input.xx").val(ui.item.id)

ルート.rb

 match '/autocomplete/categories' => "autocomplete#categories"
  resources :project_procurement_management_plans do

    resources :attachments
    resources :items do

        member do
           put :edit_pmr_item
           get  :edit_item
        end
    end
  end

ネストされた属性には異なるIDSがあり、JSを使用して呼び出す方法がわからないため、IDではなくクラスを介して呼び出しています。

任意の回避策をいただければ幸いです。ありがとう。

4

1 に答える 1

1

そのためには、cocoon コールバックをフックする必要があります。

cocoon の README の例に基づいて説明します。

$('#tasks')
  .on('cocoon:after-insert', function(e, task_to_be_added) {
    task_to_be_added.autocomplete({
      source: "/autocomplete/tags"
    });
})

動的追加の前に既にレンダリングされている itens を初期化するために行ったのと同様のことを行う必要があります。

于 2013-10-29T00:32:31.490 に答える