2017-12-01 10 views
2

を作成します。SimpleForm:私はそうのようなラジオボタンのコレクションを作成することができます知っているカスタム関連コレクション入力タイプ

# Slim template 
= f.association :requirement, as: :radio_buttons 

私は、ユーザーがラジオボタンの上にテキストフィールドを使用してラジオボタンをフィルタリングするようにしたいですので、私は少し周りをハッキングし、次のを思い付いた:

label for="filter" Filter 
input#filter type="text" 
= f.association :requirement, as: :radio_buttons 

今、私はカスタムコレクション入力タイプを使用して自動的にこのようなものを作成したいと思います:

= f.association :requirement, as: :autocomplete 

カスタム入力を作成しようとしましたが、動作しませんでした。

私は次のカスタム入力作成:

# app/inputs/autocomplete_input.rb 
class AutocompleteInput < SimpleForm::Inputs::CollectionRadioButtonsInput 
    # ... 
end 

このリード、次のエラーには:あなたは

undefined method `collection_autocomplete' for #<SimpleForm::FormBuilder:0x007ffc1d90e9a0> 

を意味しましたか? collection_select

私はSimpleFormのソースコード内のビットの周りを検索し、その後、私はラジオボタンのコレクションの入力のために見つけたものを模倣しようとした:

Circular dependency detected while autoloading constant AutocompleteInput 
:このかなり奇妙なエラーに

module SimpleForm 
    class FormBuilder 
    map_type :autocomplete, to: SimpleForm::Inputs::AutocompleteInput 
    end 
end 

しかし、このリード

これから進める方法がわかりません。私は簡単な文字列とテキストエリアの入力のためにいくつかのカスタム入力を作成しましたが、コレクションの場合、どのように処理するのか分かりません。

+0

これが役立つかどうかわかりませんが、この正確な問題を扱っている[GitHubページ](https://github.com/plataformatec/simple_form/issues/1497)に未解決の問題があるようです。たぶんあなたはそこから探しているものを引っ張ることができますか? – jayands

+0

カスタム入力を作成する方法の質問に答えたいのですか、オートコンプリートの仕組みを知りたいですか?あなたが選んでいるパスが、解決したい問題の正しい解決策に見えないからです。 – murb

+0

私は同じ問題を抱えています。 – Mateu

答えて

0

問題はcollection_autocompleteメソッドを呼び出しますCollectionRadioButtonsInput

@builder.send(:"collection_#{input_type}", 
     attribute_name, collection, value_method, label_method, 
     input_options, merged_input_options, 
     &collection_block_for_nested_boolean_style 
    ) 

のこの行から来ています。

解決方法:CollectionRadioButtonsInputから継承しないでください。ソースをコピーして変更します。きれいではありませんが動作します。

関連する問題