Rails-具有根可伸缩路径的多个模型

时间:2018-07-28 01:31:30

标签: ruby-on-rails ruby-on-rails-4 routes ruby-on-rails-5 friendly-id

我正在寻找建议,以找到适合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

0 个答案:

没有答案