2012-01-04 105 views
2

使用此questionrailscast 63我有我的文章路由到articles/article_permalink。没有型号名称的路由

我希望它们可以在url中没有模型名称的情况下访问,以便my-domain.com/article_permalink直接路由到文章。我只希望在演出中发生这种情况。这可能吗?

回答

2

我想你需要这样的东西......

(在routes.rb中)

match '/:id' => 'articles#show', :via => 'get' 

(必须是最后一个,或朝向路线尽头,因为它可以匹配其他路线的请求)

要更改article_path(...)助手,“as”可能有所帮助:http://guides.rubyonrails.org/routing.html#overriding-the-named-helpers

或者您可以为该特定路径添加助手。

+0

这工作马上感谢。 “as”似乎用于重新路由注册新的照片或图片等 - 我看不到我会如何使用它来完全遗漏型号名称。你有什么建议如何使link_to显示永久链接,而不是文章/永久链接。 – Edward 2012-01-04 18:02:22

+0

你可以添加一个article_path helper ...我认为这就是所谓的生成url。 我想调查一下:作为选择,我仍然认为这可以做你想做的事,尽管我不积极。并确保不会干扰您的其他文章路径(更新,删除等)。 – samsm 2012-01-05 20:27:35

0

如果我理解您的问题,您希望与路线“articles/article_permalink”绑定的模型基于哪个文章从列表中选择是动态的?

您是否愿意将模型ID附加到URL的末尾作为查询字符串?更复杂的方法是将您的链接POST,将模型ID作为隐藏的输入字段。你的控制器可以通过get/post来确定它是否被访问,并相应地处理它,但是这并不正确。

无论如何,当基于对“articles/article_permalink”的请求启动控制器动作时,它必须知道要获取哪个模型。由于HTTP是无状态的,所以必须传入一些东西。你可能会喜欢并编写JavaScript来触发一个AJAX调用,设置一个会话变量,然后触发GET,但这很麻烦。

我希望我理解这个问题......

+0

[请勿在您的帖子中使用签名或标语](http://stackoverflow.com/faq#signatures)。 – meagar 2012-01-04 16:01:30