Rails路由:如何路由到特定的控制器/操作/ ID?

时间:2013-08-30 20:15:19

标签: ruby-on-rails ruby-on-rails-3 rails-routing

我认为这应该是一个简单的问题。我想路由表格的网址:

http://mywebsite.com/my_special_tag 

具有特定ID的特定控制器/操作对,例如

http://mywebsite.com/user/post/13 

(其中13是我想传递给控制器​​/动作的id。)

另请注意,我不想重定向,只想渲染。

在Rails 3中有一种简单的方法吗?

谢谢!

3 个答案:

答案 0 :(得分:1)

假设您具体了解要渲染的网址,您可以明确匹配路线中的目标:

# config/routes.rb
match 'my_special_tag' => 'user#post', :defaults => {:id => 13}

请注意,这必然要求您在post内执行UserController操作(请注意,这些名称是单数,因为它们位于您想要的路径中)。< / p>

答案 1 :(得分:0)

你只需要一个这样的表:

标签表:

id | post_id | tag
-------------------
1  |    13   | my_special_tag

然后你需要一个before_filter,它接受​​该标记并检查数据库中的post_id。

您还需要一个看起来像这样的通配符路线:Rails 3.1 - in routes.rb, using the wildcard, match '*' is not catching any routes

从此开始,如果您有更具体的问题,请告诉我们,我们可以为您提供更好的帮助。

答案 2 :(得分:0)

如果您检查了路线,则应该获得用户邮政路线的语法,如果您已正确定义了嵌套路线。

要为路线设置别名,您可以为特定匹配定义特定ID,如下所示:

match '/special_tag' => 'posts#index', :defaults => { :id => '5' }

更新

为了澄清,上述内容仅应用于您想要为其路由的几个特定页面。如果您想为每个用户帖子页面提供更友好的用户链接,我建议使用类似https://github.com/norman/friendly_id的内容,以便您拥有

等路线
http://example.com/states/washington

而不是:

http://example.com/states/4323454