Rails 3 tag_list.each - PullRequest
       8

Rails 3 tag_list.each

2 голосов
/ 14 октября 2011

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

<%= proyects.tag_list.each do |tagsx| %>
* <%= tagsx %>  <br>
<% end %>

И я получаю список, который ищу, но также и весь массив снова ... Когда он рендерится, выглядит так ...

* AJAX
* Rails
* Heroku
* Prototype
AJAX, Rails, Heroku, Prototype

Есть идеи по избавлению от последней строки?Или вы, ребята, знаете более эффективный способ достижения этого?

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 14 октября 2011

Изменить это:

<%= proyects.tag_list.each do |tagsx| %>

к этому:

<% proyects.tag_list.each do |tagsx| %>

Вы не хотите выводить возвращаемое значение вызова .each, только элементы массива. Вызов Array#each с блоком возвращает массив (как вы):

каждый {| item | блок} → ary
каждый → an_enumerator
Вызывает block один раз для каждого элемента в self, передавая этот элемент в качестве параметра. Если block не задан, вместо него возвращается перечислитель.

и вот откуда исходит список с разделителями-запятыми.

1 голос
/ 14 октября 2011

потому что в вашем коде есть опечатка: -)

<%- proyects.tag_list.each do |tagsx| %>
* <%= tagsx %>  <br>
<% end %>

видите разницу?

нет '=' после первого знака%

% = означает, что результат выражения Ruby возвращается в представление

% - означает, что выражение Ruby вычисляется, но результат не возвращается

Код в вашем вопросе получает "proyects.tag_list", выполняет цикл, в течение которого он выводит отдельные теги, а затем возвращает весь массив в представление из-за '='

...