ruby-on-rails - Friendly_id 名称未显示在 url 中

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

我已将 friendly_id gem 添加到我的应用程序中。 name 属性不会替换 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

Controller

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

View 路径

/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)

奇怪的是,生成的 URL 原来是:http://localhost:3000/items/1

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

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

最佳答案

在您看来:按钮生成 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)

关于ruby-on-rails - Friendly_id 名称未显示在 url 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41046752/

相关文章:

sql - counter_cache has_many_through sql优化,减少sql查询次数

ruby-on-rails - 使用 expectPOST 测试 AngularJS Controller

ruby-on-rails - 在 Rails 中子类化用户模型真的很糟糕吗?

indexing - Google 网站管理员工具网站未编入索引

wordpress - robot.txt 和网站管理员工具中的多语言站点地图问题

ruby-on-rails - RSpec 发送电子邮件(不存储在 ActionMailer::Base.deliveries 中) - 不知道为什么?

ruby-on-rails - 如果设置了 graphQL 字段方法参数默认值,则使用 RSpec 进行测试

Ruby 方法链

codeigniter - 使用 CodeIgniter 重写 url

ruby-on-rails - ruby /rails : How to get same encrypted value every time we encrypt a particular string