Ruby on rails 4 生成具有特定模型属性的rails路由

Ruby on rails 4 生成具有特定模型属性的rails路由,ruby-on-rails-4,Ruby On Rails 4,我正在建立一个培训网站,在那里我试图根据数据库中的一列内容标题为内容生成动态路由。我已经走得很远了,但我对最后一部分有意见 假设内容标题为“商务旅行”,即关于商务旅行的培训课程。使用如下所示的代码,模板中的link_to helper方法生成如下链接: http://localhost:3000/courses/Business Travel 我需要的是用破折号分隔单词,比如堆栈溢出问题URL的格式 有内置的方法吗?或者我必须编写一个助手函数,将内容对象的title属性转换为URL友好的内容?

我正在建立一个培训网站,在那里我试图根据数据库中的一列内容标题为内容生成动态路由。我已经走得很远了,但我对最后一部分有意见

假设内容标题为“商务旅行”,即关于商务旅行的培训课程。使用如下所示的代码,模板中的link_to helper方法生成如下链接:

http://localhost:3000/courses/Business Travel
我需要的是用破折号分隔单词,比如堆栈溢出问题URL的格式

有内置的方法吗?或者我必须编写一个助手函数,将内容对象的title属性转换为URL友好的内容?或我这样做完全是错误的吗

contentcontroller.rb

class ContentController < ApplicationController

before_action :signed_in_user

def tracks
    end

def courses
    @courses = Content.all
end

def show
        @course = Content.find_by_title(params[:title])
end

end
class Content < ActiveRecord::Base

validates :title, presence: true
validates :description, presence: true

end
<% provide(:title, 'Tracks') %>
<div class="container">
    <% @courses.each do |course| %>
        <div class="row">
            <%= link_to course_path(course.title) do %>
                <div class="col-md-12 course-box content-link centertext">
                    <strong><%= course.title %></strong>
                    <p><%= course.description %></p>
                </div>
            <% end %>
        </div>
    <% end %>
</div>
match '/courses/:title', to: 'content#show', via: 'get', as: 'course'

基本上,您正在寻找的是段塞url。看一看
friendly\u id
gem

这非常容易开始。查看
Rails快速启动
部分,这将使您了解最新情况

为了您的方便

在您的
gem文件中

gem 'friendly_id'
在终端中运行以下命令

rails generate friendly_id
rails generate migration add_slug_to_content slug:string
编辑生成的迁移文件以包括

add_index :contents, :slug, unique: true
运行rake迁移

rake db:migrate
将以下内容添加到内容类

class Content < ActiveRecord::Base
   extend FriendlyId
   friendly_id :title, use: :slugged

   validates :title, presence: true
   validates :description, presence: true
end 
类内容
这将自动为您将URL转换为模型id:)