'如果'在路线中的陈述

时间:2012-11-12 20:01:14

标签: ruby-on-rails ruby-on-rails-3 rest routes categories

我发布了一个名为'category'的行的模型,它存储了带有类别的字符串。我想改变我的路线,如果我进入"blog"类别,那么它会显示如下地址:mysite.com/blog/1或者如果我的帖子类别为"portfolio",它会显示我的帖子地址喜欢mysite.com/portfolio/2等。是否可以不制作另一张表并存储类别?我正在考虑一些路线if声明,但此刻无法弄清楚它有什么。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为你可以这样做!

CATEGORIES = %w[portfolio blog sites]
      CATEGORIES.each do |cat|
    get cat + '/:id', controller: 'post', action: 'show'
  end

或者使用范围:

   CATEGORIES = %w[portfolio blog sites]
      CATEGORIES.each do |cat|
         scope cat do
    get '/:id', controller: 'post', action: 'show'
     end
   end

答案 1 :(得分:1)

为什么不用

抓住它们
match ':category/:id' => 'posts#show'

然后,您可以按控制器中:category哈希中的params值进行过滤。

@post = Post.where category: params[:category], id: params[:id]