我一直想知道你们为填写rails中的下拉菜单做了什么,而没有在视图中溅出代码。你们做个转轴吗?你创建一个类并添加返回数组的方法吗?
我总是想知道其他人是如何使它们工作的,例如我需要用我创建一个名为DropDownFiller的类的所有国家填充组合框的另一种方法,并添加了一个名为fill_countries的方法,它将返回一个包含所有数组的数组国家。
关于此的最佳做法是什么或如何做?
答案 0 :(得分:1)
帮助器options_for_select
获取一系列选项并构建选择。来自文档:
options_for_select([["Dollar", "$"], ["Kroner", "DKK"]])
<option value="$">Dollar</option>\n<option value="DKK">Kroner</option>
options_for_select([ "VISA", "MasterCard" ], "MasterCard")
<option>VISA</option>\n<option selected="selected">MasterCard</option>
options_for_select({ "Basic" => "$20", "Plus" => "$40" }, "$40")
<option value="$20">Basic</option>\n<option value="$40" selected="selected">Plus</option>
options_for_select([ "VISA", "MasterCard", "Discover" ], ["VISA", "Discover"])
<option selected="selected">VISA</option>\n<option>MasterCard</option>\n<option selected="selected">Discover</option>
the documentation中有更详细的例子。
根据您的数据设置方式,可以轻松填写列表。例如:
options_for_select Country.select(:name).all.map { |c| c.name }
或自定义值
options_for_select Country.all.map { |c| [c.name, c.code] }
我见过的其他一些事情是在模型中定义一个返回正确值的辅助方法:
class Country
# awesome country logic goes here!
def self.array_for_select
select(:name).all.map { |c| c.name }
end
end
# a long time ago in a view far far away
options_for_select Country.array_for_select