Ruby on rails ';如果';路由中的语句

Ruby on rails ';如果';路由中的语句,ruby-on-rails,ruby-on-rails-3,rest,routes,categories,Ruby On Rails,Ruby On Rails 3,Rest,Routes,Categories,我有一个名为“category”的行的post模型,它存储带有类别的字符串。我想更改我的路线,如果我进入“blog”类别,那么它将显示如下地址:mysite.com/blog/1,或者如果我的帖子类别是“公文包”它会显示我的邮箱地址,如mysite.com/portfolio/2等。是否可以不制作另一个表并存储这些类别?我正在考虑一些routeif语句,但目前无法用它来解决任何问题。任何帮助都将不胜感激。我想你可以这样做 CATEGORIES = %w[portfolio blog sites]

我有一个名为“category”的行的post模型,它存储带有类别的字符串。我想更改我的路线,如果我进入
“blog”
类别,那么它将显示如下地址:
mysite.com/blog/1
,或者如果我的帖子类别是
“公文包”
它会显示我的邮箱地址,如
mysite.com/portfolio/2
等。是否可以不制作另一个表并存储这些类别?我正在考虑一些route
if
语句,但目前无法用它来解决任何问题。任何帮助都将不胜感激。

我想你可以这样做

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

你为什么不把他们都抓起来

match ':category/:id' => 'posts#show'
然后,您可以通过控制器中的
参数
散列中的
:category
值进行过滤

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

我现在在尝试进入单个帖子的
show
视图时,发现[]:ActiveRecord::Relation的
未定义方法“title”出现错误。(标题来自帖子字段)顺便说一句,我还没有
索引
视图-我现在只需要
显示
视图,但不知道如何在路由中定义链接以保持当前类别(他们正在从
mysite.com/portfolio/
更改为
mysite.com/posts/1
。:/这可能与代码中的其他地方有关。我想试着追踪错误的来源。错误消息可能显示了麻烦的行。这有点毫无意义,实际上与
match'/portfolio/:id'=>'posts#show'检查命名路由的文档,这应该可以解决您的问题。我不明白它将如何更改我的
post#view
route?您必须将操作更改为“view”。您还可以使用SOMEMODEL.all.each()在表中循环。