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