Friendly_id 名称未显示在 url 中

Friendly_id name not displaying in url

我已将 friendly_id gem 添加到我的申请中。名称属性未替换 URL.

中的索引

Gem

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]

按钮生成 URL

<%= 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

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

 Item.find_each(&:save)

st运行ge 部分是,当生成 URL 时,它最初是:http://localhost:3000/items/1

当我手动将 URL 更改为: http://localhost:3000/items/item-name 时,它起作用了。

有人知道为什么会发生这种情况,或者我缺少什么吗?

尝试使用

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

您的模型中已有查找器。

在您看来:生成按钮 URL

<%= 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)