ROR:动态生成' new'基于属性的动作

时间:2017-02-23 10:47:22

标签: ruby-on-rails ruby-on-rails-4 slug friendly-id

我有以下任务:

  1. 有各类活动。
  2. 我只在将类别ID传递给“' new'事件的行动。
  3. 我需要隐藏' new'的网址。一个slug后面的action(类似于/ event?category_id = 1),它基于一个类别名称。喜欢这个/ large_event,/ small_event。这意味着传递大型事件类别的ID应该向用户显示新的' / large_event URL
  4. 的事件形式

    我尝试使用友好的id gem来做到这一点。可能是Iam遗漏了一些东西,但它允许为模型做一个slu ..但我只需要为新的'做一个slu ..基于另一个模型的属性的一个模型的动作。

    类别的数量可能会有所不同 - 硬编码不是一种选择。有没有优雅的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

我用了两件事来实现这个: 1.友好ID gem为类别生成slug并生成如下所示的URL,以便用户可以访问" new"行动。 2.使用regexp进行Rails路由约束。它看起来像

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

要完成它 - 我已经创建了一个合适的控制器来过滤掉不一致的参数并通过slug搜索。