- ルビー1.9.2p290
- レール
3.1.1私は2つのモデルがあります。それぞれ "belongs_toの" と "has_manyの" 協会とレシピとRECIPE_CATEGORY。のlink_to
私はこのURLでうまくカテゴリ別に全てのレシピを一覧表示することができます:
http://localhost:3001/recipes/salads
しかし、カテゴリ別にレシピリストを指し示す私の「のlink_to」にのみ、独自のアクションで働いているようだ:レシピ#list_by_categoryを。
<%= link_to recipe.recipe_category.name, recipe_category_recipes_path(@recipe_categories) %>
例えばRecipesController
def index
@recipes = Recipe.where({ :status_id => 1 }).includes(:chef, :recipe_category).order("updated_at desc").page(params[:page]).per(
end
def list_by_category
@recipe_category = RecipeCategory.find_by_name_plural(params[:recipe_category_id])
@recipes = @recipe_category.recipes.where(:status_id => 1).includes(:chef).order("id desc").page(params[:page]).per(9)
end
ルート
resources :recipes, :id => /[0-9]+/ do
match 'pagina/:page', :action => :index, :on => :collection # Kaminari
# list of recipes by category
get 'recipe_category', :to => 'recipes#list_by_category', :path => ':recipe_category_id', :on => :collection, :recipe_category_id => /[a-z]+/
end
理想URLS
- はlocalhost:3001 /レシピ/ - レシピのリスト
- はlocalhost:3001 /レシピ/ 21681 - ショーレシピのページ
- はlocalhost:3001 /レシピ/サラダ- ショーレシピカテゴリ
- によってローカルホスト:3001 /レシピ/ランチ- 日の時間によってショーのレシピ
だから、すべてにわたってカテゴリ別にレシピを指す「のlink_to」を構築する方法 行動?
私はクリアですか?私は私に知らせてください。
編集
例えばRecipesController
def index
if params[:category_id]
@category = Category.find_by_slug(params[:category_id])
@recipes = @category.recipes.where(:status_id => 1).includes(:chef).order("updated_at desc").page(params[:page]).per(9)
else
@recipes = Recipe.where({ :status_id => 1 }).includes(:chef, :category).order("updated_at desc").page(params[:page]).per(9)
@count_all = Recipe.where({ :status_id => 1 }).count()
end
end
ルート
resources :categories, :path => "recipes/categories", :only => :index do
resources :recipes, :path => "", :only => :index do
match 'pagina/:page', :action => :index, :on => :collection
end
end
resources :recipes, :path => 'receitas', :id => /[0-9]+/ do
match 'pagina/:page', :action => :index, :on => :collection
end
のURL
- はlocalhost:3001 /レシピ- リストのすべてのレシピ
- はlocalhost:3001 /レシピ/カテゴリ- リストのすべてのカテゴリ
- はlocalhost:3001 /レシピ/カテゴリ/サラダ* - リストレシピカテゴリで
SOLUTION
<%= link_to recipe.name, category_recipes_path(recipe.category.slug) %>
私は言わなければなりません:Railsは、物事を明白にする傾向がある命名規則に従います。 "RecipeCategory"はモデルの通常の名前ではありません。カテゴリはモデルです。レシピはモデルです。そのように考えると、私はあなたの質問に対する答えがもう少し明白かもしれないと思います。 [OK]を、私はそれを私の胸から持っている:-) 一般的な答え:ルートは、コントローラのアクションにマップするURLを確立するために使用されます。 RESTパターンに従えば、作業や混乱を避けることができます。 –
こんにちはtharrison、答えてくれてありがとう。私はあなたが見ているように、ルビー/レールについては新しいです。 名前のモデルについては、TipCategory、MenuCategoryなどのような多くのカテゴリのカテゴリがこのプロジェクトにあると言わざるを得ない。これはすべての種類のカテゴリを整理するために見つけた方法だった。 この場合の名前についてのご提案はありますか? 「link_to」について私はlink_to建設についてちょっと混乱しています。そして、私はそれがちょうど命名規則のことではないと信じています。 ありがとうございます。 – maiconsanson
Namingは、Railsがどのように機能するかの中心にあります。これは、必要な場合に大量の設定を置き換えます。カテゴリの種類が複数ある場合は、カテゴリテーブルに「タイプ」フィールドを追加できますか?あなたが答えを求めているのであれば、私は以下を追加しました:-)。 –