我正在尝试开发这个Rails应用程序,它有以下目标:
/foods/ -呈现食物类别的列表(例如:面包、乳制品、Biscuits...etc)
/foods/breads/ -呈现食品类别“面包”中的所有食品
foods/breads/bagel -渲染食物属性的详细视图(在本例中为百吉饼)。
目前,我有两个带有相关控制器的模型:
Foods -包含食物列表(例如:百吉饼、米饭、吐司、富茶biscuit...etc),并设置为belongs_to一只食品猫
Food Categories -将“奶制品”、“面包”等类别列表...etc&设置为has_many :foods
我真的卡在如何实现我的目标上了。我真的需要关于路由、控制器操作和视图的建议。
有什么建议吗?
发布于 2011-02-20 03:08:45
在您的routes.rb文件中,我将执行以下操作:
match 'foods' => 'FoodCategories#index'
match 'foods/:category' => 'Foods#index'
match 'foods/:category/:name' => 'Foods#show'然后我将按类别为Foods创建一个作用域:
class Food
scope :by_category, lambda{ |category| joins(:categories).where('categories.name = ?', category) }
end然后我会在你的FoodsController中有两个动作:
class FoodsController
def index
@foods = Food.by_category(params[:category])
end
def show
@foods = Food.by_category(params[:category]).where('foods.name = ?', params[:name])
end
end和你的FoodCategoriesController中的一个动作:
class FoodCategories
def index
@categories = Category.where(name: params[:category])
end
end这让你不得不实现3个视图:类别/索引,食物/索引和食物/显示。
发布于 2011-02-20 02:58:51
你应该有一个处理食物和FoodCategory模型的FoodsController和FoodCategoriesController。如果您遵循RESTful方法,则实现您列出的url配置所需的路由如下:
match '/foods' => 'food_categories#index'
match '/foods/:category_id' => 'food_categories#show'
match '/foods/:category_id/:food_id' => 'foods#show'您的FoodCategoriesController将具有索引方法,它通过执行FoodCategory.find :all lookup列出所有类别,以及显示方法,它将根据提供的:category_id查找FoodCategory,并通过has_many关系显示与其关联的所有食品。您的FoodController将具有一个显示方法,该方法至少将获取:food_id并查找与其相关联的实例。:category_id在这里并不是必须的,但它是一个很好的路由工具。
https://stackoverflow.com/questions/5052585
复制相似问题