Rails:collection_select的text_method

时间:2011-11-07 06:03:44

标签: ruby-on-rails ruby

以下是来自collect_select方法的API的摘录:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

我的收藏品是字符串数组。在 text_method 中,我想输出修改后的字符串gsub(一些正则表达式的东西)。这样做的最佳方式是什么?我可以想到重新打开String类并为text_method实现一些东西但是如果想象它不是很好的方式。

感谢。

1 个答案:

答案 0 :(得分:3)

您可以选择三个选项:

  1. 您在问题中注意到的事项:打开String类,定义一个(非常特殊的)方法,如myapp_gsub(不带参数),并将其包含为text_method
  2. 定义模型类,在集合中包含模型对象,并在模型对象内部定义文本方法。
  3. 为方法ActionView::Helpers::FormOptionsHelper#options_from_collection_for_select添加别名,并添加text_method可以作为块的选项。然后您可以自由定义text_method以及阻止。如果您不完全确定“增强”的影响是什么,我不建议您这样做。
  4. 在我看来,打开String课程是最简单的选择。