Использование link_to в файле .erb, синтаксис конкатенации - PullRequest
2 голосов
/ 12 сентября 2011
  1. В index.html.erb мне нужна ссылка, которая выглядит следующим образом для каждого колледжа: Подать заявку - $ 25

  2. Я хочу, чтобы отображаемая цена изменялась в зависимости от значения College.undergrad_app_fee.

Это то, что я пробовал, но это не работает. Возможно, существует специальный синтаксис для объединения явного «Применить -» с ценой, или мне нужно каким-то образом экранировать <% =%>, или есть специальный способ сделать это с помощью link_to?

   <td><%= link_to 'Apply - ' college.undergrad_app_fee, college.application_url %></td>

1 Ответ

12 голосов
/ 12 сентября 2011

Использовать синтаксис интерполяции строк:

<td><%= link_to "Apply - #{college.undergrad_app_fee}", college.application_url %></td>

В качестве бонуса, если у вас есть только исходная цена, вы можете отформатировать ее, используя number_to_currency:

<td><%= link_to "Apply - #{number_to_currency(college.undergrad_app_fee)}", college.application_url %></td>

Продолжение:

Для условных ссылок используйте link_to_if или link_to_unless , они должны быть относительно простыми в использовании.

Обработка случая nil для форматирования валюты немного сложнее. Для этого вы можете использовать оператор ||.

Сочетание двух методов даст следующее:

<td><%= link_to_if college.application_url, "Apply - #{number_to_currency(college.undergrad_app_fee || 0)}", college.application_url %></td>

Использование консоли rails - хороший способ проверить поведение различных помощников. Вы можете получить к ним доступ через объект helper, например:

> helper.number_to_currency(12)
 => "12,00 €"
> nil || 0
 => 0
> 12 || 0
 => 12
...