我有一个Plan
模型,它是has_many
Version
s。我正在Plan
表单中嵌套Version
表单。
表单
<%= 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 %>
我在计划中构建版本控制器#新动作:
控制器动作
def new
@plan = current_account.plans.build
@version = @plan.versions.build
end
例如,amount
输入的@version
提示取决于其父Plan
的一个名为:pricing_model
的属性。输入的hint属性使用一个助手,该助手将查看@version.plan.pricing_model
以从YAML文件中获取正确的提示。
助手
def pricing_model_hint_for_amount(version)
t("simple_form.hints.version.pricing_model.#{version.plan.pricing_model}")
end
问题:
因为@version
是在加载表单时实例化的,所以当我更改表单中的@plan
pricing_model
时,提示不会动态更新。
是否有一种方法(使用或不使用Javascript(重新加载嵌套的@plan
,以便在其父级中的某些内容发生更改时相应地更新表单提示?如果没有,是否有一种方法可以重新加载提示字段本身,以便在再次使用辅助对象时获得相同的结果?
我希望我解释了自己,否则请告诉我。谢谢
您使用的是什么版本的rails?
如果你在rails 7上,你应该考虑使用其中一种:
一个刺激控制器来监听变化并更新工具提示。(更多js(
如何创建控制器,以及您可以收听的操作。
或:
涡轮增压框架,可根据需要重新加载您的表单部分。(更多红宝石色(