我是个新手。
我知道如何在遇到以下情况时使用"to_sentence“:
<%= @blah.collect {|b| b.name}.to_sentence %>但是如果我有一个更复杂的代码块,比如:
<% skill.position.each do |position| %>
<a href="<%= position.company.url %>"><%= position.company.name %></a>
<% if position.salary? %>
<span><%= position.salary %></span>
<% end %>
<% end %>所需的输出为:
Microsoft, Google 2000, and Yahoo.发布于 2011-01-10 05:43:12
你就不能在没有.each的情况下收集它吗?
<%= skill.positions.collect{ |p| "<a href=\"#{p.company.url}\">#{p.company.name}</a>#{position.salary? ? '<span>#{position.salary}</span>' : nil}" }.to_sentence %>这对你来说应该行得通。
你也可以这样做:
<%= skill.position.each do |position| %>
<a href="<% position.company.url %>"><% position.company.name %></a>
<% if position.salary? %>
<span><% position.salary %></span>
<% end %>
<% end.to_sentence %>发布于 2011-01-10 05:39:00
to_sentence方法适用于数组。它在您的第一个示例中起作用的原因是:
<%= @blah.collect {|b| b.name}.to_sentence %>..。是因为collect方法返回一个Array。第二个示例中的each方法也会起作用,因为each也会返回一个Array。所以,这将会起作用:
<% blah.each do |b| %>
...
<% end.to_sentence %>https://stackoverflow.com/questions/4641901
复制相似问题