我有一个简单的网站,其中包含由商品组成的菜单,客户可以通过信用卡付款来订购食品。
我想把菜单分成午餐'和晚餐',我已经为每个项目创建了一个menu_type字段,但我不确定如何在不破坏嵌套路径的情况下创建视图。
我基本上需要2个午餐菜单和晚餐菜单的新视图,然后将它们添加到路线中。
class ItemsController < ApplicationController
def index
@items = Item.all
end
def lunch_menu
@items = Item.where(:menu_type => 'Lunch')
end
def dinner_menu
@items = Item.where(:menu_type => 'Dinner')
end
end
class Item < ActiveRecord::Base
attr_accessible :description, :is_live, :price_in_pence, :menu_type, :title
has_many :order_items
end
resources :items, :path => "menu", only: [ :index ] do
resource :basket, only: [ :create, :destroy ]
end
答案 0 :(得分:1)
你可以做......
def index
Time.now.hour > 4 ? dinner_menu : lunch_menu
end
也就是说您仍然使用一条路线,但根据某些外部标准调整所选项目。我建议一天中的时间,但您可能有一个start_menu操作,设置会话变量,以确定它是否是您当前正在使用的午餐或晚餐菜单。
答案 1 :(得分:1)
您已经在控制器中执行了操作,因此只需创建与其关联的视图,然后按如下方式更改路径:
resources :items, :path => "menu", only: [ :index ] do
resource :basket, only: [ :create, :destroy ]
collection do
get "lunch_menu"
get "dinner_menu"
end
end
这将为您提供/items/lunch_menu
和/items/dinner_menu