Rails:collection_select的命名方法

有没有人知道一种方法可以让collection_select为文本方法的名称命名而不是它们的值?Rails:collection_select的命名方法

我有print_100,print_200print_500,并计划在必要时添加更多。我希望选择框的值从Billing中读取所有以print_开头的字段,以便选择框只有100,200500等选项。

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_selectselect,即:

<% 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_methodtext_method进行工作,该参数定义了什么值应该应用于标签。

无论如何,这个答案主要是指向你(希望)正确的方向,因为我不确定该方法或它是如何工作的。

祝你好运。

以上是 Rails:collection_select的命名方法 的全部内容, 来源链接: utcz.com/qa/263394.html

回到顶部