Tengo un modelo de Plan que tiene has_many Version . Estoy anidando un formulario de Version dentro de un formulario de Plan .
forma
<%= simple_form_for @plan do |f| %> <%= f.simple_fields_for :version do |v| %> <%= v.input :amount, hint: "#{pricing_model_hint_for_amount(@version)}" %> <% end %> <% end %>Construyo la versión en la acción PlansController #new:
acción del controlador
def new @plan = current_account.plans.build @version = @plan.versions.build end Ahora, por ejemplo, la sugerencia @version para la entrada de amount depende de un atributo de su Plan principal llamado :pricing_model . El atributo de sugerencia de entrada consume un asistente que buscará @version.plan.pricing_model para obtener la sugerencia correcta de un archivo YAML.
ayudante
def pricing_model_hint_for_amount(version) t("simple_form.hints.version.pricing_model.#{version.plan.pricing_model}") endProblema:
Debido a que se crea una instancia @version cuando se carga el formulario, la sugerencia no se actualiza dinámicamente cuando cambio el @plan pricing_model en el formulario.
¿Hay alguna forma (con o sin Javascript) de volver a cargar el @plan anidado para que las sugerencias del formulario se actualicen en consecuencia si algo en su padre cambia? Si no es así, ¿hay alguna manera de recargar el campo de pista de modo que cuando se consuma de nuevo el ayudante se logre el mismo resultado?
Espero haberme explicado, de lo contrario por favor házmelo saber. Gracias.
¿En qué versión de Rails estás?
Si está en Rails 7, debería considerar usar:
un controlador de estímulo para escuchar los cambios y actualizar su información sobre herramientas. (más js)
Cómo crear un controlador y la acción que puede escuchar .
o:
un marco turbo para recargar partes de su formulario a pedido. (más rubí)