Обновить поля_ для без обратной передачи из JQuery / Javascript - PullRequest
0 голосов
/ 21 октября 2019

Я реализовал динамические поля продукта, связанные с моей сущностью product_type, как описано здесь http://railscasts.com/episodes/403-dynamic-forms

В моем файле product.form у меня есть следующее для динамической генерации различных партиалов

   <!-- dynamic fields -->
        <h1>Dynamic fields</h1>

        <%= form.hidden_field :product_type_id, id: "hidden_product_type_id" %>
        <div id="dynamic_fields">
        <%= form.fields_for :properties, OpenStruct.new(@product.properties) do |builder| %>
            <% @product.product_type.fields.each do |field| %>
                <%= render "products/fields/#{field.field_type}", field: field, f: builder %>
            <% end %>
        <% end %>
        </div>
        <!-- dynamic fields -->

Это все работает отлично, но у меня есть проблема, поскольку в Railcast они выбирают product_type_id при создании нового продукта, подобного этому:

  def new
    @product = Product.new(product_type_id: params[:product_type_id])
  end

В моем сценарии у меня выпадающий списоктип продукта в форме Product:

     <div class="form-group col-sm-3">
            <%= form.label :product_type_id %>
            <%= collection_select(:product, :product_type_id, ProductType.with_current_user(@current_user).order("name"), :id, :name, {}, {:onchange => 'on_product_type_change_in_product(this)', :class => 'custom-select', :disabled => is_readonly}) %>
          </div>

Onchange связан со сценарием on_product_type_change_in_product, в котором я обнаруживаю изменение типа продукта. Я могу удалить сгенерированные поля из исходного выбранного product_type_id, например:

    $("#dynamic_fields").remove() ;

Однако мне нужно найти способ, как перезагрузить следующую часть из JavaScript

   <div id="dynamic_fields">
        <%= form.fields_for :properties, OpenStruct.new(@product.properties) do |builder| %>
            <% @product.product_type.fields.each do |field| %>
                <%= render "products/fields/#{field.field_type}", field: field, f: builder %>
            <% end %>
        <% end %>
        </div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...