использование заглавных букв на collection_select - PullRequest
8 голосов
/ 19 ноября 2010

Если на этот вопрос уже был дан ответ, я не могу его найти.

У меня есть следующее:

= f.collection_select :sex_id, @sexes, :id, :name

и это в контроллере:

@sexes = Sex.all

Полы хранятся в нижнем регистре, например:

id|name
 1|steer
 2|heifer
 3|holstein

Мне нужно, чтобы они выводились заглавными буквами:

Steer
Heifer
Holstein

Я пытался:

= f.collection_select :sex_id, @sexes, :id, :name.capitalize
= f.collection_select :sex_id, @sexes, 'id', 'name'.capitalize

но они не работают, и я действительно не ожидал их, но должен был попробовать их, прежде чем опубликовать это.

Ответы [ 3 ]

7 голосов
/ 19 ноября 2010

collection_select вызывает метод для каждого объекта, чтобы получить текст для значения параметра. Вы можете добавить новый метод в модель, чтобы получить правильное значение:

def name_for_select
  name.capitalize
end

затем в поле зрения:

= f.collection_select :sex_id, @sexes, :id, :name_for_select
0 голосов
/ 04 июля 2014

Более простой способ сделать это в RoR4 - использовать метод humanize .Итак, ваш код представления будет выглядеть так:

= f.collection_select :sex_id, @sexes, :id, :humanize

Нет необходимости в каких-либо дополнительных методах!

0 голосов
/ 19 ноября 2010

Причина, по которой ваша первоначальная попытка не сработала, заключается в том, что вы пытаетесь использовать заглавную букву символа или строки, которая представляет имя поля, а не фактическую переменную.

Вы можете сделать что-то подобное, и тогда данные будут заглавными, прежде чем они будут отправлены в представление.

@sexes = Sex.all    
@sexes = @sexes.each{|sex| sex.name.capitalize}

или

@sexes = Sex.all.each{|sex| sex.name.capitalize}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...