Ruby on rails 4 生成具有特定模型属性的rails路由
我正在建立一个培训网站,在那里我试图根据数据库中的一列内容标题为内容生成动态路由。我已经走得很远了,但我对最后一部分有意见 假设内容标题为“商务旅行”,即关于商务旅行的培训课程。使用如下所示的代码,模板中的link_to helper方法生成如下链接: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友好的内容?
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:)