Rails 3 tag_list.each

问题描述 投票:2回答:2

我有一个问题,试图从acts_as_taggable_on tag_list制作一个列表我有标签列表数组,我想列出它所以我试试这个:

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

我得到的列表我正在寻找,但也是整个阵列...当它呈现时,看起来像这样..

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

有关摆脱最后一行的任何想法?或者你们知道一种更有效的方法吗?

提前致谢。

ruby-on-rails ruby ruby-on-rails-3 each acts-as-taggable-on
2个回答
4
投票

改变这个:

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

对此:

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

您不希望输出.each调用的返回值,只是输出数组的元素。用块调用Array#each会返回数组(就像你一样):

每个{|项目|阻止}→ary 每个→an_enumerator 对self中的每个元素调用一次,将该元素作为参数传递。如果没有给出块,则返回枚举器。

这就是逗号分隔列表的来源。


1
投票

因为你的代码中有拼写错误:-)

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

看到不同?

在第一个%符号后没有'='

%=表示将Ruby表达式的结果返回给视图

% - 表示计算Ruby表达式,但不返回任何结果

您的问题中的代码获取“proyects.tag_list”,执行循环,在此期间打印出单个标记,然后将整个数组返回到视图,因为'='

© www.soinside.com 2019 - 2024. All rights reserved.