现有静态标题的动态seo网址

时间:2013-09-15 03:50:57

标签: ruby-on-rails ruby-on-rails-3

我有多个表,其中有100行,其中有一个名称字段。名称字段的内容类似于 some name

我目前的网址是

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

如何将其转换为

http://localhost:3000/some-name

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

2 个答案:

答案 0 :(得分:1)

可以转换为http:localhost:3000/some-name。 你必须做这样的事情:

get ":row-name" => 'controller#actoin_name', :as => 'row_name'

并将其放在路径文件的末尾,以便任何其他操作都不会在此路径上被捕获。在控制器操作中,您需要执行以下操作:

@row = Row.find(params[:row_name])

但对于rails来说这不是一个好主意。你应该像这样映射网址:

resources:rows , :except=> [:show]
 get rows/:row_name => 'rows#show' 

答案 1 :(得分:0)

您可能需要查看friendly-id gem

以下是关联的railscast on it

但是,这会为您提供localhost:3000 / posts / some-name等网址 如果要消除帖子路径,可能必须修改路由才能执行此操作。

评论更新。

您必须创建迁移。 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