我正在构建一个简单的食谱应用程序。我有一个按最流行的顺序返回国家/地区列表的方法
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的新手我不知道要实现这个目的的资源是什么,最好有一个方法来完成这个逻辑,然后在块中使用该方法?
答案 0 :(得分:1)
a)我建议你不要在你的路线上对每个国家采取行动,因为这会使你的路线变得混乱。您可以将通配符和参数定义为路线的一部分,但只有一个操作可以处理不同的国家/地区。
所以你可以拥有这样的网址:/ world / germany,/ world / france 但是他们都应该在你的控制器中调用相同的动作。
b)link_to
需要2个参数。首先是要显示的标题,第二个参数是url。
所以你可以链接到这样排名靠前的国家:
<li><%= link_to r.name, country_worldrecipes_path(r) %></li>
现在您只需要为country_worldrecipes_path定义正确的路由 有关路由look here的更多信息。