我使用Ruby可枚举来创建另一个模型的数组。方法“公司参与”
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>
["3point5.com", "Company", "5.1", "A O Coolers", "Abo Gear", "Access Fund", "AceCamp.com", "ACORN"
/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
我错过了什么?
答案 0 :(得分:2)
而不是:
<%= @accounts.each do |f|%>
不使用=
:
<% @accounts.each do |f|%>
=
是您的代码显示数组的原因。
答案 1 :(得分:1)
each
返回self
,即调用它的对象,<%=
显示其内部表达式所评估的内容。 <%=
内的表达式为@accounts.each
,返回@accounts
,显示ergo,@accounts
。
如果您不希望显示数组,请使用仅{em>执行但不显示代码的<%
。