我需要网址,
本地主机:3000 /纽约
代替,
本地主机:19分之3000
在你的gem文件中写
gem "friendly_id"
在gemfile中编写gem后运行bundle install
创建迁移以在模型中添加slugs列
rails g migration AddSlugToCity
add_column :cities, :slug, :string
add_index :cities, :slug, unique: true
在你的控制器写
@city = City.friendly.find(params[:id])
在您的城市模块中使用友好ID
class City < ActiveRecord::Base
extend FriendlyId
friendly_id :title, use: :slugged
end
那么,你需要在路线中指定param
:
resources :cities, param: :name
此外,Rails使用模型上定义的to_param
方法,该方法应该返回您要查找的参数 - 您还需要在City上定义它:
class City < ActiveRecord::Base
# ...
def to_param; name; end
# ...
end
然后,当您生成路线时,您可以将对象直接传递给city_path
:
link_to @city.name, city_path(@city)
最后,但并非最不重要的是,调整你的控制器find_by
name
,而不是id:
@city = City.find_by! name: params[:name]
或者,对于开箱即用的解决方案,尝试一些现有的宝石,如friendly_id
!
你可以做get '/:city_name' => 'city#city_method', as: 'city'
像<%= link_to @city.name, city_path(city_name: @city.name) %>
一样使用它