【问题标题】:Rails 3 tag_list.eachRails 3 tag_list.each
【发布时间】:2011-12-07 09:04:15
【问题描述】:

我在尝试从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


    【解决方案1】:

    改变这个:

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

    到这里:

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

    您不想输出.each 调用的返回值,只输出数组的元素。使用块调用 Array#each 会返回数组(原样):

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

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

    【讨论】:

    • 我就知道是这样的,非常感谢,我整天都在研究这个问题。
    【解决方案2】:

    因为您的代码中有错字:-)

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

    看到区别了吗?

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

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

    %- 表示对 Ruby 表达式求值,但没有返回结果

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-10
      • 2012-01-14
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多