Использование to_sentence - PullRequest
0 голосов
/ 10 января 2011

Я новичок ...

Я знаю, как использовать 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.

Ответы [ 2 ]

1 голос
/ 10 января 2011

Не могли бы вы просто собрать его без .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 %>
1 голос
/ 10 января 2011

Методы to_sentence работают с массивами.Причина, по которой он работает в вашем первом примере ...

<%= @blah.collect {|b| b.name}.to_sentence %>

... в том, что метод collect возвращает Array.Каждый метод во втором примере также будет работать, потому что each также возвращает Array.Итак, это будет работать:

<% blah.each do |b| %>
  ...
<% end.to_sentence %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...