我正在尝试使用这个具有以下目标的Rails应用程序:/foods/
-呈现食物类别的列表(例如:面包,乳制品, cookies 等)/foods/breads/
-呈现食品类别“面包”中的所有食品foods/breads/bagel
-呈现Food属性的详细 View (在此示例中为Bagel)。
目前,我有两个带有关联 Controller 的模型:Foods
-包含食物列表(例如:百吉饼,米饭,吐司,浓茶 cookies 等),并设置为belongs_to
单个食物猫Food Categories
-类别列表,例如“乳制品”,“面包” ...等,并设置为has_many :foods
我真的坚持如何实现自己的目标。我确实需要有关路由, Controller 操作和 View 的建议。
有什么建议么?
最佳答案
在您的routes.rb文件中,我将执行以下操作:
match 'foods' => 'FoodCategories#index'
match 'foods/:category' => 'Foods#index'
match 'foods/:category/:name' => 'Foods#show'
然后,我将按类别创建食品范围:
class Food
scope :by_category, lambda{ |category| joins(:categories).where('categories.name = ?', category) }
end
然后,您的FoodsController中将有2个动作:
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种 View :类别/索引,食品/索引和食品/展示。
关于ruby-on-rails - 铁路应用模型/ Controller 和路线组织,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5052585/