基本上我有两种型号:CHEFS和RECIPES。
class Chef < ActiveRecord::Base
has_many :recipes
end
class Recipe < ActiveRecord::Base
belongs_to :chef
end
以下路线:
resources :recipes
resources :chefs do
# list of recipes from chef
resources :recipes, :to => 'recipes#index_chef'
end
有了这个,我有了网址(正是我想要的):
的RecipesController:
def index
@chef = Chef.find_by_username(params[:chef_id])
@recipes = Recipe.where({ :status_id => 1 }).order("id desc").page(params[:page]).per(9)
end
def index_chef
@chef = Chef.find_by_username(params[:chef_id])
@recipes = @chef.recipes.where(:status_id => 1).order("id desc").page(params[:page]).per(9)
end
我的食谱索引查看:
<%= link_to recipe.chef.username.capitalize, @chef %>
在http://3001/chefs/username/recipes中,我有一个指向Chef个人资料的正确链接。
但在http://3001/recipes我的链接错误。
我做错了什么?
答案 0 :(得分:0)
在http://3001/recipes(这是一个奇怪的网址!)中,您无法访问params[:chef_id]
。因此,您在视图中无法使用@chef变量。它应该是nil
!
要解决此问题,请将link_to更改为此
<%= link_to recipe.chef.username.capitalize, recipe.chef %>
您可能希望将主厨加载到您的@recipes
记录,方法是将其加载到您的控制器中,如下所示:
@recipes = Recipe.where({ :status_id => 1 }).includes(:chef).order("id desc").page(params[:page]).per(9)
希望这有帮助。