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 という別のコントローラーを用意します。

私がやりたいことは、その国の特定のアクションへのリンクです(アクションは国と同じ名前になります)

レールを初めて使用するので、これを達成するためにどのリソースを読むべきかわかりません。このロジックを通過するメソッドを用意してから、ブロック内でメソッドを使用する方がよいでしょうか?

4

1 に答える 1

1

a) ルートに国ごとのアクションを設定しないことをお勧めします。ルートの一部としてワイルドカードとパラメーターを定義できますが、異なる国を処理するアクションは 1 つだけにしてください。

したがって、次のような URL を持つことができます: /world/germany, /world/france しかし、それらはすべてコントローラーで同じアクションを呼び出す必要があります。

b) link_to2 つのパラメータを取ります。最初に表示されるタイトル、2 番目のパラメーターは URL です。

したがって、次のようにランキング上位の国にリンクできます。

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

これで、country_worldrecipes_path の正しいルートを定義するだけで済みます。ルーティングの詳細については、こちらを参照してください

于 2012-12-12T11:56:44.713 に答える