首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用to_sentence

使用to_sentence
EN

Stack Overflow用户
提问于 2011-01-10 05:21:21
回答 2查看 871关注 0票数 0

我是个新手。

我知道如何在遇到以下情况时使用"to_sentence“:

代码语言:javascript
复制
<%= @blah.collect {|b| b.name}.to_sentence %>

但是如果我有一个更复杂的代码块,比如:

代码语言:javascript
复制
<% skill.position.each do |position| %>              
  <a href="<%= position.company.url %>"><%= position.company.name %></a>
  <% if position.salary? %>
    <span><%= position.salary %></span>
  <% end %>
<% end %>

所需的输出为:

代码语言:javascript
复制
Microsoft, Google 2000, and Yahoo.
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-10 05:43:12

你就不能在没有.each的情况下收集它吗?

代码语言:javascript
复制
<%= skill.positions.collect{ |p| "<a href=\"#{p.company.url}\">#{p.company.name}</a>#{position.salary? ? '<span>#{position.salary}</span>' : nil}" }.to_sentence %>

这对你来说应该行得通。

你也可以这样做:

代码语言:javascript
复制
<%= 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 %>
票数 1
EN

Stack Overflow用户

发布于 2011-01-10 05:39:00

to_sentence方法适用于数组。它在您的第一个示例中起作用的原因是:

代码语言:javascript
复制
<%= @blah.collect {|b| b.name}.to_sentence %>

..。是因为collect方法返回一个Array。第二个示例中的each方法也会起作用,因为each也会返回一个Array。所以,这将会起作用:

代码语言:javascript
复制
<% blah.each do |b| %>
  ...
<% end.to_sentence %>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4641901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档