Rails 3 tag_list.each

发布于 2024-12-09 21:40:25 字数 404 浏览 1 评论 0原文

我在尝试从 acts_as_taggable_on tag_list 制作列表时遇到问题 我有标签列表数组,我想列出它,所以我尝试这样做:

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

我得到了我正在寻找的列表,但也得到了整个数组...... 当它渲染时,看起来像这样..

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

关于删除最后一行有什么想法吗? 或者你们知道实现这一目标的更有效方法吗?

提前致谢。

I have a problem trying to make a list from a acts_as_taggable_on tag_list
I have tag list array, and I want to list it so im trying this:

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

And I get the list im looking for, but also the whole array again...
When it renders, looks like this..

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

Any ideas on getting rid of the last line?
Or do you guys know a more efficient way of achieving this?

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

佞臣 2024-12-16 21:40:25

将其更改

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

为:

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

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

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

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

Change this:

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

to this:

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

You don't want to output the return value of the .each call, just the elements of the array. Calling Array#each with a block returns the array (as you are):

each {|item| block } → ary
each → an_enumerator
Calls block once for each element in self, passing that element as a parameter.
If no block is given, an enumerator is returned instead.

and that's were the comma delimited list is coming from.

赴月观长安 2024-12-16 21:40:25

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

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

看到区别了吗?

第一个 % 符号后没有“=”

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

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

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

because you have a typo in your code :-)

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

see the difference?

no '=' after the first % sign

%= means that the result of a Ruby expression is returned to the view

%- means that the Ruby expression is evaluated, but no result is returned

The code in your question gets "proyects.tag_list" , executes the loop, during which it prints out the individual tags, and then returns the whole array to the view because of the '='

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文