0

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

http://mywebsite.com/my_special_tag 

到具有特定 id 的特定控制器/动作对,例如

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

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

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

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

谢谢!

4

3 回答 3

1

假设您明确知道要渲染到哪个 URL,您可以显式匹配路由中的目标:

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

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

于 2013-08-30T20:32:04.167 回答
0

You simply need a table like this:

tags table:

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

And then you need a before_filter, that takes that tag and checks the database for the post_id.

You'd also need a wildcard route that looks something like this: Rails 3.1 - in routes.rb, using the wildcard, match '*' is not catching any routes

Start with that and then let us know when you have more specific questions and we can help you better.

于 2013-08-30T20:23:21.367 回答
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
于 2013-08-30T21:51:13.440 回答