我已将 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/