我已将.
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
时,它可以正常工作。
任何人都知道为什么会这样,或者我错过了什么?
答案 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
您的模型中已有查找器。