複数のselect要素とcollection_select要素を持つrails(v5)フォームを作成しました。 次に、Select2-rails(v4.0.3)を使用して、タグのような素晴らしい選択を可能にします。 検索オプションはajaxによって引き出されます。Select2 rails form retopulation
必須フィールドのない送信ボタンを押すまでは問題ありません。 有効なフィールドコンテンツがフィールドから削除されました。
私はいくつかのサンプルコードを挙げてみましょう:
コントローラ:
...
def form
if params[:form_request].nil?
@form_request = FormRequest.new
else
@form_request = FormRequest.new(params[:form_request])
end
end
def request_form
@form_request = FormRequest.new(params[:form_request])
if @form_request.valid?
render :summary
else
render :form
end
end
...
形式:
...
<%= bootstrap_form_for(@form_request, url: '/form/request_form') do |f| %>
<%= f.select :field, [], {label: 'Field label'} %>
<%= f.submit "Submit form" %>
<% end %>
:フィールドがモデルに必ず書き込み可能なフィールドのためである(データが設定されていますファイン)
coffee-script:
Query ->
$("#form_request_from").select2({
ajax: {
url: func =(params) ->
filter = params.term
return "/data.json?filter=" + filter;
,
dataType: 'json',
processResults: processData
},
theme: 'bootstrap',
placeholder: 'Enter data here'
});
processData = (data) ->
mapdata = $.map(data, func =(obj) ->
obj.id = obj.id;
obj.text = obj.name;
return obj;
);
return { results: mapdata };
私は多くの可能性を考えていますが、最終的にはフィールドデータがどこから来るのかわかりません。オブジェクトの内部にありますが、結果として得られるHTMLには書き込まれません。 idが選択されたオプションとして書かれていても、 のselect2スクリプトは、それを文字列に変換して実際のデータを表示する方法を知る必要があります。
検証に失敗した後もデータがフィールドに書き込まれるようにするにはどうすればよいですか?