【发布时间】:2012-01-04 15:23:18
【问题描述】:
使用 question 和 railscast 63 我将我的文章路由到文章/article_permalink。
我希望它们可以在 url 中没有模型名称的情况下访问,因此 my-domain.com/article_permalink 直接路由到文章。我只希望这发生在表演动作中。这可能吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3.1 routes
使用 question 和 railscast 63 我将我的文章路由到文章/article_permalink。
我希望它们可以在 url 中没有模型名称的情况下访问,因此 my-domain.com/article_permalink 直接路由到文章。我只希望这发生在表演动作中。这可能吗?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3.1 routes
我认为你需要类似 ...
(在 routes.rb 中)
match '/:id' => 'articles#show', :via => 'get'
(需要放在最后,或者接近路由的末尾,因为它可以匹配针对其他路由的请求)
要更改 article_path(...) 助手,“as”可能会有所帮助:http://guides.rubyonrails.org/routing.html#overriding-the-named-helpers
或者您可以为该特定路径添加帮助器。
【讨论】:
如果我理解您的问题,您希望与路线“articles/article_permalink”相关联的模型根据从列表中选择的文章是动态的吗?
您愿意将模型 ID 作为查询字符串附加到 URL 的末尾吗?更复杂的方法是让您的链接 POST,将模型 ID 作为隐藏的输入字段。您的控制器可以确定它是否通过 get/post 访问,并相应地处理它,但感觉不对。
无论如何,当控制器动作基于对“articles/article_permalink”的请求被触发时,它必须知道要获取哪个模型。由于 HTTP 是无状态的,因此必须传入一些东西。您可以花点时间编写 JavaScript 来触发一个 AJAX 调用,设置一个会话变量,然后触发 GET,但这很麻烦。
我希望我理解了这个问题......