【发布时间】:2018-02-13 09:02:08
【问题描述】:
大家好,我是 Rails 新手。对不起,如果我不能正确定义这个问题。
我想要的是:
domain.com/posts/1-sample-post
这样路由:
domain.com/1-sample-post
如何在 Rails 路线中实现这一目标?我已经尝试搜索了将近 3 个小时。这在 PHP 框架中非常容易。我认为这在 Rails 中也很容易。
我忘了提到我在我的应用中为我的静态页面安装了 High_voltage gem。
这样做:
#routes.rb
resources :posts
get '/:id' => 'posts#show'
现在我的高压页面无法呈现。
更新解决方案:
这就是我们在路线中所做的:
Rails.application.routes.draw do
resources :authors
constraints(lambda { |req| Author.exists?(slug: req.params["id"]) }) do
get '/:id' => 'authors#show'
end
devise_for :users
resources :posts
constraints(lambda { |req| Post.exists?(slug: req.params["id"]) }) do
get '/:id' => 'posts#show'
end
end
请注意,仅使用存在很重要?在这里查询,因为它比其他方法非常快,所以它不会消耗太多的加载时间来呈现一条记录。
特别感谢下面提供了很多帮助的人。 Nathanvda、rwold 和 Tai。
【问题讨论】:
-
1 是帖子 ID?
-
@Tai,是的,我已经处理了那部分。我需要的是删除 /posts/ 部分。
-
你的路线看起来怎么样?
-
@Tai,感谢您的评论。我更新了我的问题。
标签: ruby-on-rails rails-routing high-voltage