2016-11-26 2 views
0

У меня есть массив, как то, что я использую в f.select при обновлении на профиль пользователяRuby Как получить доступ к «ключу» двумерного массива?

SEX = [["Male", 'M'], 
     ["Female", 'F']] 

Я хотел бы использовать хэш, но я не мог заставить его работать на все с избранной вещью. Поэтому у меня есть раскрывающийся список со значениями «Мужской» и «Женский», и он присваивает значение «М» или «F» переменной пользователя: пол. Теперь, когда вы показываете профиль, мне нужно выводить секс как «ключ» здесь (мужчина или женщина, а не M/F). Как я могу получить доступ к этим «ключевым» значениям, помимо создания огромных get_sex и других геттеров для более крупных методов массивов, которые вообще не будут СУХОЙ? Что я могу сделать здесь?

ответ

0

Рассмотрите возможность использования хэш вместе с options_for_select помощнике:

options_for_select({ "Male" => "M", "Female" => "F" }, "M") 

Дополнительная документация может быть найдена here.

+0

Как я могу использовать его с существующим хэш хотя? Я не понимаю –

+0

Я пробовал это, но это не сработало <% = f.label: sex%> <% = f.options_for_select (Пользователь: SEX.map {| s | [s.key, s.value]})%> –

+0

В нем указывается неопределенный метод 'key 'для [" Male "," M "]: массив, хотя теперь это хеш. Weird –

0

Для удобства ознакомьтесь с документацией here. Но точно так же, как сказал панмайри, это путь.

Чтобы сделать его предложение более гибким, я рекомендую вам создавать константы для мужчин и женщин и передавать их в качестве хеша для выбранного помощника.

+0

Я прочитал его, но я до сих пор не понимаю, как это сделать с существующим хешем (если я делаю это так: options_for_select ({"Basic" => "$ 20", "Plus" => "$ 40"}) как я могу получить доступ к значению ключа позже?) –

+0

Вы можете получить доступ только к значению в контроллере и написать короткий условный оператор для определения пары ключей. –

Смежные вопросы