Friendly_id名称未显示在网址中

时间:2016-12-08 18:50:58

标签: ruby-on-rails ruby seo friendly-id

我已将. gem添加到我的应用程序中。 name属性不替换URL中的索引。

宝石

friendly_id

移植

gem 'friendly_id', '~> 5.1.0'

迁移文件

rails g migration add_slug_to_items slug:string

控制器

class AddSlugToItems < ActiveRecord::Migration
  def change
    add_column :items, :slug, :string
    add_index :items, :slug
  end
end

查看路径

def show
  @searched_item = Item.friendly.find(params[:id])
end

路线

/views/items/show.html.erb

按钮生成网址

resources :items, only: [:new, :create, :update, :show]

模型

<%= link_to fr.name, item_path(fr.id, search_info: params), class:"searched_kennel_title_link default_green_color" %>

这是一个预先存在的应用程序,所以我也跑了:

  extend FriendlyId
  friendly_id :name, use: [:slugged, :finders]

  def should_generate_new_friendly_id?
    name_changed?
  end

奇怪的是,当生成URL时,最初是: Item.find_each(&:save)

当我手动将URL更改为:http://localhost:3000/items/1时,它可以正常工作。

任何人都知道为什么会这样,或者我错过了什么?

2 个答案:

答案 0 :(得分:2)

在您查看时:按钮生成网址

<%= link_to fr.name, item_path(fr.id, search_info: params), class:"searched_kennel_title_link default_green_color" %>

您是否尝试替换item_path(fr.id, search_info: params)

至:item_path(fr, search_info: params)

或:item_path(fr.slug, search_info: params)

答案 1 :(得分:0)

尝试使用

def show
  @searched_item = Item.find(params[:id])
end

您的模型中已有查找器。