Ruby on rails Rails路由:如何路由到特定的控制器/操作/id?

Ruby on rails Rails路由:如何路由到特定的控制器/操作/id?,ruby-on-rails,ruby-on-rails-3,rails-routing,Ruby On Rails,Ruby On Rails 3,Rails Routing,我认为这应该是一个简单的问题。我想发送表单的URL: http://mywebsite.com/my_special_tag 到具有特定id的特定控制器/操作对,例如 http://mywebsite.com/user/post/13 (其中13是我要传递给控制器/操作的id) 还要注意,我不想重定向,只想渲染 在Rails 3中有没有一种简单的方法可以做到这一点 谢谢 您只需要这样一张表: 标签表: id | post_id | tag ------------------- 1 |

我认为这应该是一个简单的问题。我想发送表单的URL:

http://mywebsite.com/my_special_tag 
到具有特定id的特定控制器/操作对,例如

http://mywebsite.com/user/post/13 
(其中13是我要传递给控制器/操作的id)

还要注意,我不想重定向,只想渲染

在Rails 3中有没有一种简单的方法可以做到这一点


谢谢

您只需要这样一张表:

标签表:

id | post_id | tag
-------------------
1  |    13   | my_special_tag
然后,您需要一个
before\u filter
,它接受该标记并检查数据库中的post\u id

您还需要一个通配符路由,如下所示:


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

如果您明确知道要呈现给哪个URL,您可以显式匹配路由中的目标:

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

请注意,这必然要求您在
UserController
中有一个
post
操作(请注意,名称是单数的,因为它们在您所需的路径中)。

如果您检查了路由,您应该获得用户post路由的语法,如果您正确定义了嵌套路由

要为路由别名,可以为特定匹配定义特定id,如下所示:

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

为了澄清这一点,上述内容只应用于您希望为其别名路由的几个特定页面。如果你想为每个用户的帖子页面提供一个更友好的链接,我推荐一些类似的东西,它可以让你拥有类似

http://example.com/states/washington
而不是:

http://example.com/states/4323454

我试过了,没用。给我一个错误“未初始化常量用户”。这是为什么?你能确认你的路径确实是
user/post/13
,而不是
users/posts/13
(或者是其中的某个迭代)吗?它仍然不起作用。但我做的是:获取'my_special_tag',:controller=>'user',:action=>'post',:id=>'13'不确定有什么区别。这是什么状态?你找到解决这个问题的办法了吗?如果是这样的话,如果你把问题的答案贴出来会很有帮助。