如何将Rails表单中的collection_select语法转换为simple_form语法
解决方案
没问题,这很容易转换!你原来的Rails原生collection_select代码是用来创建一个多选的标签选择器,对应simple_form的写法非常直观,直接用input方法并指定对应的参数即可:
<%= f.input :tag_ids, collection: Tag.order(:name), value_method: :id, label_method: :name, input_html: { multiple: true }, label: 'Categories' %>
参数对应关系说明
:tag_ids:和原生代码里的第一个参数一致,是表单要提交的字段名collection: Tag.order(:name):对应原生代码里的Tag.order(:name),指定下拉框的选项数据源value_method: :id&label_method: :name:分别对应原生代码里的:id和:name,用来指定选项的value值和显示文本input_html: { multiple: true }:对应原生代码里最后一个哈希参数里的multiple: true,开启多选功能label: 'Categories':对应原生代码里的Categories:文本,用来设置字段的标签
可选优化方案
如果需要添加一个空选项(比如引导性提示文本),可以加上include_blank参数:
<%= f.input :tag_ids, collection: Tag.order(:name), value_method: :id, label_method: :name, input_html: { multiple: true }, label: 'Categories', include_blank: '请选择标签' %>
另外,如果你想把多选形式从下拉框改成复选框组,只需要添加as: :check_boxes参数即可:
<%= f.input :tag_ids, collection: Tag.order(:name), value_method: :id, label_method: :name, as: :check_boxes, label: 'Categories' %>
这样就能完美替代你原来的原生表单代码,而且符合simple_form的优雅写法~
内容的提问来源于stack exchange,提问作者swilliams
相关产品推荐
相关产品推荐

