我认为这应该是一个简单的问题。我想路由表格的网址:
http://mywebsite.com/my_special_tag
具有特定ID的特定控制器/操作对,例如
http://mywebsite.com/user/post/13
(其中13是我想传递给控制器/动作的id。)
另请注意,我不想重定向,只想渲染。
在Rails 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