0

我有多个表,其中有 100 行具有名称字段。名称字段的内容如下 some name

我当前的网址是

http://localhost:3000/posts/show/2

如何将其转换为

http://localhost:3000/some-name

对于动态插入数据,我用friendly url gem的很好。

4

2 回答 2

1

转换成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' 
于 2013-09-15T07:40:10.790 回答
0

您可能想看一下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
于 2013-09-15T03:55:45.377 回答