onchangeイベントがトリガーされたときに非同期で更新する必要があるフォームの一部であるsimple_form入力フィールドがあります。
更新する必要があるフィールドは、コレクションであるため、選択ボックスとして表示されます。ただし、コレクションはネストされたセット モデルのレコードを表します。したがって、ユーザーが特定の値を選択したときに、同じフィールドをその子で更新し、同じフィールドの値として子のいずれかを選択するオプションをユーザーに提供できるようにしたいと考えています。
問題は、フォームの残りの部分に触れずにそのフィールドだけを更新するにはどうすればよいかということです。
私の現在のセットアップのアイデアを提供するだけです: フォームは次のようになります:
<%= simple_form_for @product, html: {class: 'form-horizontal'} do |f| %>
<%= f.input :product_name %>
<%= f.association :location, collection: @locations, input_html: { data: {remote: :true, url: "/update_locations"} } %>
<%= f.submit 'Post', class: 'btn btn-default btn-lg' %>
<% end %>
@product はLocationに属する新しいProductであり、 @locationsはそれぞれがhas_many ProductであるLocationのコレクションである ため、simple_form関連付けメソッド Location もacts_as_nested_setを使用します
これはroutes.rbにあります
get 'update_locations' => 'products#update_locations'
コントローラーのアクションを完了するのに助けが必要です:
def update_locations
@product = Product.new
@location = Location.find_by_id(params[:product][:location_id])
@locations = @location.children
# TODO: render code that updates the simple_form field with
# the new @locations collection
end
上記のコントローラーがレンダリングするはずの部分ビューにどのコードを入れるべきかわかりません。