- ruby 1.9.2p290
- рельсы 3.1.1
У меня есть две модели: RECIPE и RECIPE_CATEGORY с ассоциацией "own_to" и "has_many" соответственно.
Я могу перечислить все рецепты по категориям по этому URL:
http://localhost:3001/recipes/salads
Но в моем "link_to", который указывает на список рецептов по категориям, похоже, работает только в вашем собственномдействие: recipes # 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
Желаемые URL-адреса
- localhost: 3001 / recipes / - список рецептов
- localhost: 3001 / recipes / 21681 - показать страницу рецепта
- localhost: 3001 / рецепты / салаты - показать рецепты по категориям
- localhost: 3001 / recipes / lunch -показывать рецепты по часам дня
Итак, как построить "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
URLS
- localhost: 3001 / recipes - список всех рецептов
- localhost: 3001 / recipes/ категории - список всех категорий
- localhost: 3001 / рецепты / категории / салаты * - список рецептов по категориям
РЕШЕНИЕ
<%= link_to recipe.name, category_recipes_path(recipe.category.slug) %>