首页 > 解决方案 > SimpleForm(你能设置默认的 label_method 和 value_method 参数吗?)

问题描述

使用 SimpleForm,我可以为 :label_method 和 :value_method 设置默认值,这样我就不需要为每个输入设置它了吗?

默认情况下,我的意思是为我的所有输入设置 label_method 和 value_method 的地方,所以我不需要为每个输入设置它们。

例子:

而不是这个:

<%= f.association :model_in_question, include_blank: false, label_method: :label_for_form, value_method: :value_for_form %>

我要这个:

<%= f.association :model_in_question, include_blank: false %>

标签: ruby-on-railssimple-formruby-on-rails-5.2simple-form-for

解决方案


我想这就是你要找的:

简单表单关联自定义标签名称

<%= f.association :owner_type, :include_blank => false, :label_method => lambda { |owner| "#{owner.name} | #{owner.subtype_name}" } %>

相同的逻辑适用于 value_method。所以如果你有一个模型,你可以调用一个方法label_for_formvalue_for_form返回你需要的值。然后以您的形式:

<%= f.association :model_in_question, include_blank: false, label_method: :label_for_form, value_method: :value_for_form %>

只要您的集合中的对象对这两种方法都有响应,那么您就不需要在表单中手动写出集合。


推荐阅读