Rails: отображение @cars в виде списка через запятую - PullRequest
8 голосов
/ 03 ноября 2010

На основании этого запроса:

@cars = Car.where("manufacturer_id IN ?", @mfts.select("id")).limit(30).select("id")

Как я могу отображать идентификаторы автомобилей в таком виде (или мне нужно переписать мой запрос)?

3,2,5,12,15,24,34,63,64,65,66,85

Большое спасибо - я искал это, но не смог найти правильный вопрос / ответ.


Одно из решений заключается в следующем:

#view
<% @cars.each do |c| %><%= c.id %>,<% end %>

Я не знаю, есть ли лучший способ сделать это - это, очевидно, оставляет запятую в конце списка (который не является нарушителем). Есть более элегантные решения?

Ответы [ 3 ]

30 голосов
/ 03 ноября 2010

Одна строка:

<%= @cars.map(&:id).join(",") %>
8 голосов
/ 28 августа 2012

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

<%= @cars.map { |car| car.id }.join(", ") %>

P.S ... другое имя для map это collect .. это то, что называется в Smalltalk.

Выглядит хорошо!

5 голосов
/ 04 апреля 2014

С Rails 3.0+ теперь вы можете написать:

<%= @cars.map { |car| car.id }.to_sentence %>

Rails соответствующим образом добавит комментарии и слово 'и' между двумя последними элементами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...