【问题标题】:In rails is there a way to make a url without the sub folder在rails中有没有办法在没有子文件夹的情况下创建一个url
【发布时间】:2014-10-06 07:03:57
【问题描述】:

我想知道是否有一种方法可以制作在没有控制器路径的情况下运行的 rails 应用程序。

通常一些路径可能是
www.mysite.com/event/slug
www.mysite.com/event/this_is_the_first_event_slug
www.mysite.com/event/another_slug_here

我想知道是否有一种方法(在 rails 范例内)可以在主路径之外创建页面
例如
www.mysite.com/slug
www.mysite.com/this_is_the_first_event_slug
www.mysite.com/another_slug_here

我知道这是一件小事,但它让我有些烦恼,我想设置它。

【问题讨论】:

  • 这不是一回事。那是询问如何删除 url 的操作方面。我正在尝试删除 url 的控制器方面。它与 1/0 与 0/1 差不多
  • 是一回事。 newcreate 默认没有任何路由后缀。这留下了资源前缀(subscribers,你称之为“控制器方面”,可能是因为SubscribersController)。该问题的公认答案描述了如何摆脱它。

标签: ruby-on-rails controllers


【解决方案1】:

您必须在 routes.rb 中定义另一个路由,这可能是您设置的最后一条规则之一,因为其他路由应该首先匹配。

get 'event_:slug' => 'events#show'

在您的show 方法中,参数slug 可以作为params[:slug] 使用。

如果需要,您可以在命令行中使用rake routes 验证规则。将新路由添加到 routes.rb 文件后,该命令将显示如下内容:

GET    /event_:slug(.:format)                 events#show

【讨论】:

  • 我想这可能是它。我今晚手头有代码时会测试它...谢谢。
  • @baash05 进展如何?
【解决方案2】:

是的,你可以。

routes.rb,点个赞

match '/event_slug' => 'event#slug'

就是这样。因此,如果您在浏览器中输入 www.mysite.com/event_slug,那么考虑到路由模式,它肯定会起作用。

【讨论】:

  • 从 Rails 4 开始不推荐使用 match 关键字。也许 slug 是一个参数。
  • 问题在于 event_slug 就像事件的 id。它们不会在应用启动时设置,但会随着更多事件的添加而增长。
  • 所以如果event_slug 是一个参数,那么路由模式可能会有所不同。 get '/:event_slug_parameter', :to => 'event#event_slug'。我希望这有效
  • 是的.. 这并不是什么紧急的事情.. 只是我的应用程序中的一个错误熊。 (可能是我拖延部署)
猜你喜欢
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-28
  • 2015-10-29
  • 2017-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多