我有一个引用记录的id的数字列表,我需要遍历列表,并显示每个资源的标题和链接。我目前有这个:
- @otherresource = "1,2,3"
- @otherresource.split(",").each do |s|
- Resource.find(:all, :conditions => ["id = 's'"]).each do |p|
%li= link_to "#{ p.title }", "/resources/#{p.resourcetype}/#{p.title}"
但这仅显示列表中的第一个然后停止。它不会遍历每个数字。
答案 0 :(得分:1)
我写这个如下,因为在单个VS多个数据库中获取多个记录更有效率。
- @otherresource = '1,2,3'
- Resource.where(id: @otherresource.split(',')).each do |res|
%li- link_to #{res.title}, "/resources/#{res.resourcetype}/#{res.title}"
上述查询使用单个查询,而不是示例中的三个查询。
HTH
答案 1 :(得分:1)
您的控制器应负责从数据库中获取资源:
def action
@otherresource = "1,2,3"
ids = @otherresource.split ","
@resources = Resource.where(id: ids) # fetch all resources at once
end
然后在你看来:
- @resources.each do |p|
%li= link_to "#{ p.title }", "/resources/#{p.resourcetype}/#{p.title}"
顺便说一句,对于这种关系使用关联可能是个好主意。有关详细信息,请参阅http://guides.rubyonrails.org/association_basics.html。
答案 2 :(得分:0)
您没有检查id
是否等于s
变量。您正在检查id
是否等于“s”字符。
正确的条件应该是:
:conditions => ["id = '" + s + "'"]