2

我正在使用 Ruby enumerable 从另一个模型创建一个数组。“公司参会”方式

class Conference < ActiveRecord::Base
  has_many :accountconferences
  has_many :accounts, :through => :accountconferences
  accepts_nested_attributes_for :accounts

  def companiesattending
    accounts.collect {|f| f.name }
  end

end

奇怪的是,当我把它放到一个视图中时,我得到了一个预期的项目列表,然后列表末尾的一些数组成员仍然在一个数组中:

查看结果

    <ul style="list-style-type: none;">
        <li>Company 1</li>
    </ul>

    <ul style="list-style-type: none;">
        <li>Company 2</li>
    </ul>
[&quot;3point5.com&quot;, &quot;Company&quot;, &quot;5.1&quot;, &quot;A O Coolers&quot;, &quot;Abo Gear&quot;, &quot;Access Fund&quot;, &quot;AceCamp.com&quot;, &quot;ACORN&quot;

/app/views/conferences/_accounts.html.erb

<div class="span5">
<h3 class="pull-left">Companies That Are Attending</h3></br></br></br>
 <%= @accounts.each do |f|%>
    <ul style="list-style-type: none;">
        <li><%= f %></li>
    </ul>
 <% end %>
</div>

/app/models/conferences.rb(显示动作)

  def show
    @conference = Conference.find(params[:id])
    @accounts = @conference.companiesattending  
  end

我错过了什么?

4

2 回答 2

2

代替:

<%= @accounts.each do |f|%>

使用这个没有=

<% @accounts.each do |f|%>

=是您的代码显示数组的原因。

于 2013-05-20T13:57:33.130 回答
1

each返回self,即调用它的对象,并<%=显示其中的表达式计算结果。里面的表达式<%=@accounts.each返回的@accounts,ergo,@accounts被显示。

如果您不想显示数组,请使用<%执行但不显示代码的数组。

于 2013-05-20T14:34:07.187 回答