Ruby on rails ROR:为';动态生成URL;新';基于属性的动作

Ruby on rails ROR:为';动态生成URL;新';基于属性的动作,ruby-on-rails,ruby-on-rails-4,slug,friendly-id,Ruby On Rails,Ruby On Rails 4,Slug,Friendly Id,我有以下任务: 事件有很多种类 我仅通过将类别id传递给事件的“新建”操作来创建事件 我需要将“新建”操作的URL(类似于/event?category_id=1)隐藏在基于类别名称的slug后面。像这个大事件,小事件。这意味着传递大型事件类别的id时,应使用/Large_event URL显示用户“新”形式的事件 我已经尝试使用友好的id gem来实现这一点。也许我遗漏了一些东西,但它允许为一个模型制作一个slug。但我只需要根据另一个模型的属性为一个模型的“新建”操作制作一个slug 类别的

我有以下任务:

  • 事件有很多种类
  • 我仅通过将类别id传递给事件的“新建”操作来创建事件
  • 我需要将“新建”操作的URL(类似于/event?category_id=1)隐藏在基于类别名称的slug后面。像这个大事件,小事件。这意味着传递大型事件类别的id时,应使用/Large_event URL显示用户“新”形式的事件
  • 我已经尝试使用友好的id gem来实现这一点。也许我遗漏了一些东西,但它允许为一个模型制作一个slug。但我只需要根据另一个模型的属性为一个模型的“新建”操作制作一个slug


    类别的数量可能会有所不同-硬编码不是一个选项。有什么优雅的方法可以做到这一点吗?

    我使用了两种方法来实现这一点: 1.友好的ID gem为类别生成slug,并生成如下URL,以便用户能够访问“新建”操作。 2.带有regexp的Rails路由约束。看起来像

     get "arenda/:category_slug" => 'auctions#new', constraints: { category_slug: /\w+/ } 
    

    最后,我创建了一个合适的控制器来过滤不一致的参数并按slug进行搜索。

    我使用了两种方法来实现这一点: 1.友好的ID gem为类别生成slug,并生成如下URL,以便用户能够访问“新建”操作。 2.带有regexp的Rails路由约束。看起来像

     get "arenda/:category_slug" => 'auctions#new', constraints: { category_slug: /\w+/ } 
    

    最后,我创建了一个合适的控制器来过滤不一致的参数并按slug进行搜索。

    查看一下用于路由@KcUS_unico的文档,我找到了一种方法-slug类别并将事件作为嵌套资源。我将允许我有像/small_category/events/new这样的URL。但是我需要重写已经测试过的代码。还有其他想法吗?看一看路由@KcUS_unico的文档,我找到了一种方法——删除类别并将事件作为嵌套资源。我将允许我有像/small_category/events/new这样的URL。但是我需要重写已经测试过的代码。还有其他想法吗?