Ruby on rails Rails:文本\u收集方法\u选择

Ruby on rails Rails:文本\u收集方法\u选择,ruby-on-rails,ruby,Ruby On Rails,Ruby,以下是从API中提取的集合\u选择方法: collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {}) 我的集合是字符串数组。在text_方法中,我想输出修改后的字符串gsubsome regex stuff。最好的方法是什么?我可以考虑重新打开String类并为text_方法实现一些东西,但如果可以想象的话,这并不是一个很好的方法 谢谢 您有三

以下是从API中提取的集合\u选择方法:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})
我的集合是字符串数组。在text_方法中,我想输出修改后的字符串gsubsome regex stuff。最好的方法是什么?我可以考虑重新打开String类并为text_方法实现一些东西,但如果可以想象的话,这并不是一个很好的方法


谢谢

您有三种选择:

您在问题中注意到的是:打开String类,定义一个非常特殊的方法,比如myapp_gsub,不带参数,并将其作为text_方法包含。 定义模型类,在集合中包含模型对象,并在模型对象内部定义文本方法。 将方法ActionView::Helpers::FormOptions HelperOptions_从_集合中选择并添加选项,使text_方法可以是块。然后,您可以自由定义text_方法以及块。如果您不能完全确定该增强的影响,我不建议您这样做。
因此,在我看来,打开String类将是最简单的选择。

这是做什么的/它来自哪里?数组已具有。它来自表单选择框值。因此,如果我使用f.select而不是f.collection\u select,我在概念上会面临同样的问题,不是吗?从给定的选项来看,我必须同意重新打开字符串是最好的方法。刚做完,看起来不像我想的那么不漂亮。我更喜欢第二种选择。修改内置类对我来说从来都不安全,而且由于collection_sort是一个Rails构造,我们可能有一个模型。