大家好,我是 Rails 新手。对不起,如果我不能正确定义这个问题。
我想要的是:
domain.com/posts/1-sample-post
像这样路由:
domain.com/1-sample-post
我如何在铁路路线中实现这一目标?我已经尝试搜索了将近 3 个小时。这在 PHP 框架中非常容易。我认为这在 Rails 中也很容易。
我忘了提到我在我的应用程序中为我的静态页面安装了 High_voltage gem。
做过这个:
#routes.rb
resources :posts
get '/:id' => 'posts#show'
现在我的 High_voltage 页面无法呈现。
更新解决方案:
所以这是我们在路线中所做的:
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。