如何在AR集合中使用to_sentence

时间:2011-09-26 03:49:41

标签: ruby-on-rails-3

我有User.all,返回3个结果。

我怎样才能做到这一点,我可以将每个结果呈现为:

<a href="path_to_user_foo_here">Foo</a>, <a href="path_to_user_bar_here">Bar</a>, and <a href="path_to_user_foobar_here">Foobar</a>

在浏览器中呈现时,将显示为:

Foo, Bar, and Foobar

我知道to_sentence帮手。但不太确定如何执行此操作,因为User.all返回3个哈希对象。我可以使用.map(&:first_name),但我怎样才能在link_to方法中提供路径路径。

寻找有效的方法。

1 个答案:

答案 0 :(得分:1)

我认为你正在寻找这样的东西。 (回答更新)

帮助

module ApplicationHelper
  ...
  include ActionController::UrlWriter
  def generate_user_links_sentence
    links = User.all.collect do |user|
      link_to user.first_name, user_path(user)
    end
    links.to_sentence
  end
  ...
end

# Example: <%= generate_user_links_sentence %>

如果您愿意,可以将生成逻辑分离到控制器中,但是从助手访问路径路径很困难,更不用说控制器了。在视图中可能有更好的方法来做到这一点,但这是我现在真正想到的。

更新:只是在视图中:

<%= User.all.collect{|u| link_to u.first_name, user_path(u)}.to_sentence %>