0

我正在构建一个简单的食谱应用程序。我有一个按最受欢迎的顺序返回国家列表的方法

 class Country < ActiveRecord::Base

def self.top_countries
joins(:recipes).
  select('countries.*, count(*) AS recipes_count').
  group('countries.id').
  order('recipes_count DESC')
end

然后我像这样在视图中输出它

<% @toprankingcountry.each do |r|%>
 <ul>
 <li><%= link_to r.name %></li>
</ul>

所以这只是列出了我所有的结果

然后,我有一个名为 worldrecipes 的单独控制器,其中包含每个国家/地区名称的操作

我想要做的是链接到该国家/地区的特定操作(该操作将与该国家/地区命名相同)

作为 Rails 的新手,我不确定要阅读哪些资源来实现这一点,最好有一种方法来遍历这个逻辑,然后在块中使用该方法?

4

1 回答 1

1

a)我建议您不要在您的路线中针对每个国家/地区采取行动,因为这会真正使您的 routes.rb 混乱。您可以将通配符和参数定义为路线的一部分,但只有一个操作应处理不同的国家/地区。

所以你可以有这样的 url:/world/germany, /world/france 但是它们都应该在你的控制器中调用相同的动作。

b)link_to采用 2 个参数。首先要显示的标题,第二个参数是 url。

所以你可以像这样链接到那些排名靠前的国家:

<li><%= link_to r.name, country_worldrecipes_path(r) %></li>

现在您只需为 country_worldrecipes_path 定义正确的路线。有关路由的更多信息,请查看此处

于 2012-12-12T11:56:44.713 回答