Rails:collection_select的命名方法
有没有人知道一种方法可以让collection_select
为文本方法的名称命名而不是它们的值?Rails:collection_select的命名方法
我有print_100
,print_200
和print_500
,并计划在必要时添加更多。我希望选择框的值从Billing
中读取所有以print_
开头的字段,以便选择框只有100
,200
和500
等选项。
f.collection_select(:print_quantity, Billing.all, :print_100, :print_100)
有什么想法?干杯。
回答:
感谢@DavidDraughnn提供此解决方案的想法。我在相关助手写了一个方法,即:
def get_quantities @quantities = {}
Billing.column_names.each do |a|
if a.match(/^print_/)
@quantities[a.delete "print_"] = a.delete "print_"
end
end
return @quantities
end
而且我已经调整到collection_select
select
,即:
<% get_quantities %> <%= f.select(:print_quantity, @quantities, {:prompt => "Please select..."}) %>
希望帮助别人。
回答:
我对这部分导轨并不熟悉,所以要温和。
http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-collection_select
语法是 collection_select(对象,方法,收集,value_method,text_method,选项= {},html_options = {})
如果要改变第二参数(method
)到一个实际的方法(而不仅仅是您从结算对象中获得的属性),您可以随心所欲地创造价值。
如果这不起作用(或者如果您不允许将该属性替换为方法),那么您可以使用第5或第6个参数value_method
和text_method
进行工作,该参数定义了什么值应该应用于标签。
无论如何,这个答案主要是指向你(希望)正确的方向,因为我不确定该方法或它是如何工作的。
祝你好运。
以上是 Rails:collection_select的命名方法 的全部内容, 来源链接: utcz.com/qa/263394.html