我试图在rails中编写一个简单的CMS,允许使用文本网址而不是标准/posts/show/<id>
。
我有一个标题和正文的模型,我想替换标题中的空格并将其用作网址
我也希望在根级别拥有网址,而不是过去/ pages / show。
答案 0 :(得分:4)
看看这个gem friendly_id,用于从存储在数据库中的模型字段创建url。否则,您可以创建您想要的示例获取的路线&#39;页面/显示&#39;,主页#index和指向您想要的任何位置。
答案 1 :(得分:1)
虽然friendly_id gem真的很棒,但对于这么简单的需求来说却很重要。您可以考虑采用更轻松的替代方法:https://github.com/johnotander/urls_for_humans
答案 2 :(得分:1)
您可以通过如下设置覆盖您的rails网址:
get 'posts' => 'posts#index'
在你的路线中。
但是既然你想格式化show动作的url(取决于帖子中每个项目的特定id),你最好的选择是使用真棒 friendly_id gem。
请参阅:https://github.com/norman/friendly_id
一些资源:
答案 3 :(得分:0)
我已经想出了如何做我想做的事
我正在使用类似(config/routes.rb)
的参数设置到根网址的路由:
get ':title', to: 'pages#show', as: :page
现在我有一个由rails generate scaffold Page title:string body:text
生成的页面控制器
它有一个函数set_page我改为执行此(app/controllers/pages_controller.rb)
:
def set_page
@page = Page.find_by("title" => params[:title])
end