我想从simple_form中的一系列选项生成一个单选按钮列表。用户选择的任何选项都将作为该特定字段的数据发送。 options数组可以是一个简单的数组或一个哈希数组,它并不重要。此外,我需要一些确保选择当前值的能力。什么是最好的方法呢?
答案 0 :(得分:0)
只需在控制器中声明另一个实例变量并在视图中使用它吗?
在控制器动作中:
def whatever_action
@user = # whatever
@options = # however you get the options
end
然后是以下形式:
<%= f.collection_radio_buttons :options, @options, :first, :last %>
答案 1 :(得分:0)
IMO这个选项数组最好位于辅助方法中,但是对于每个自己的方法。
在这种情况下,您可以利用OpenStruct,它会为您提供干净的访问者,因此您不必询问......是我的密钥符号还是字符串?
然后你可以使用simple_form的label_method / value_method选项。
in Helper
# at top of helper module
require 'ostruct'
module ApplicationHelper # (or whatever helper you want)
...
# passed as an array of hashes, each hash composed of {id: __, value: "blah"}
def dynamic_options(initial_values = [])
initial_values.each do |hash_item|
OpenStruct.new(hash_item)
end
end
...
end
然后在视野中
f.collection_radio_buttons :options, collection: dynamic_options, :id, :value