我正在寻找建议,以找到适合Rails最佳实践的理想解决方案。
我的应用程序有5种型号:
一个地方属于一个类别。一个部门属于一个地方。细分属于部门,项目可以属于地点,部门或细分。
这是我的路线。rb
resources :categories, path: ''
get ':category/:place', to: 'places#show', as: :place
get ':category/:place/:item', to: 'items#show', as: :place_item
get ':category/:place/:division', to: 'divisions#show', as: :division
get ':category/:place/:division/:item', to: 'items#show', as: :division_item
get ':category/:place/:division/:subdivision', to: 'subdivisions#show', as: :subdivision
get ':category/:place/:division/:subdivision/:item', to: 'items#show', as: :subdivision_item
问题在于,如果我输入URL:
/category/place/divison
错误是“找不到项目”。
我当前正在为子弹使用friendly_id,是否有最好的方法来引入新模型“ Slug”来处理所有这5个模型的子弹?
可能是这样的吗? (尚未测试)
get '/*category_id', :controller => 'slugs'
这里是item_controller:
def show
end
def show_place_item
render "show"
end
def show_division_item
render "show"
end
def show_subdivision_item
render "show"
end
private
def set_item
@item = Item.friendly.find(params[:id])
end
def item_params
params.require(:item).permit(:name, :slug, :category_id)
end