2011-11-07 63 views
1

繼text_method是從API爲collection_select方法的摘錄:的Rails:collection_select

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

我的收藏是字符串數組。在text_method我想輸出修改後的字符串gsub(一些正則表達式的東西)。做這件事的最好方法是什麼?我可以考慮重新打開String類併爲text_method實現一些東西,但是如果想象它不是很好的方法。

謝謝。

+0

這是做什麼/它從哪裏來的?數組已經有[select方法](http://rubydoc.info/stdlib/core/1.9.3/Array#select-instance_method)。 –

+0

它來自表單選擇框值。因此,如果我將使用f.select而不是f.collection_select,我會在概念上面對同樣的問題,對嗎? – alexs333

回答

3

有三個選項,你可以做什麼:

  1. 你已經注意到什麼在你的問題:打開String類,定義一個(非常特殊)方法類似myapp_gsub(不帶參數),幷包括爲text_method
  2. 定義模型類,將模型對象包含在您的集合中,並在模型對象內定義文本方法。
  3. 別名方法ActionView::Helpers::FormOptionsHelper#options_from_collection_for_select並添加選項text_method可以是一個塊。然後你可以自由地定義text_method和塊。如果你不完全確定這種「增強」的影響是什麼,我不會推薦。

因此,在我看來,打開String類是最簡單的選擇。

+0

從給出的選項我必須同意重新打開一個字符串是最好的方法。就這樣做,並不像我想象的那麼漂亮。 – alexs333

+1

我更喜歡第二種選擇。修改內置類對我來說絕對不會感到安全,因爲'collection_sort'是一個Rails構造,所以我們可能有一個模型。 – Kevin

相關問題