我有多个表,其中有 100 行具有名称字段。名称字段的内容如下
some name
我当前的网址是
http://localhost:3000/posts/show/2
如何将其转换为
http://localhost:3000/some-name
对于动态插入数据,我用friendly url gem
的很好。
我有多个表,其中有 100 行具有名称字段。名称字段的内容如下
some name
我当前的网址是
http://localhost:3000/posts/show/2
如何将其转换为
http://localhost:3000/some-name
对于动态插入数据,我用friendly url gem
的很好。
转换成http:localhost:3000/some-name
是可能的。你必须做这样的事情:
get ":row-name" => 'controller#actoin_name', :as => 'row_name'
并将其放在路由文件的末尾,这样任何其他操作都不会被此路由捕获。在控制器操作中,您需要这样做:
@row = Row.find(params[:row_name])
但这对 Rails 来说不是一个好主意。你应该像这样映射 url:
resources:rows , :except=> [:show]
get rows/:row_name => 'rows#show'
您可能想看一下friendly-id gem
这是相关的railscast
但是,这会给你类似 localhost:3000/posts/some-name 的 URL 如果你想消除帖子路径,你可能需要修改路由来做到这一点。
从评论更新。
您必须创建一个迁移。rails g migration add_slug_to_posts slug:string
class AddSlugToPosts < ActiveRecord::Migration
def change
add_column :posts, :slug, :string
add_index :posts, :slug
end
end