# Rails 以中文標題作為網址路徑(FriendlyId & babosa(亂碼轉中)) ###### tags: `rails`, `ruby` 環境: > ruby 2.6.7 > > Rails 6.1.3.1 > > Ubuntu 20.04 LTS ## :memo: ### Step 1: 移動至Gemfile安裝 ```ruby= gem 'friendly_id', '~> 5.4', '>= 5.4.2' gem 'babosa', '~> 1.0', '>= 1.0.4' # 移動至Ubuntu使用gem導入至專案 $ bundle # 移動至Ubuntu,為要加上網址的model,增加slug:inuq $ rails g migration add_slug_to_story(model) slug:uniq ``` **移動至/appname/db/migrate再確認** ```ruby= # /20210503021553_add_slug_to_story.rb class AddSlugToStory < ActiveRecord::Migration[6.1] def change add_column :stories, :slug, :string add_index :stories, :slug, unique: true end end ``` ```ruby= # 移動至Ubuntu $ rails generate friendly_id $ rails db:migrate ``` ### Step 2: 移動至剛新增:slug欄位的model新增以下程式碼 ```ruby= #路徑:/appname/app/models/story.rb # babosa def normalize_friendly_id(input) input.to_s.to_slug.normalize(transliterations: :russian).to_s end # FriendlyId extend FriendlyId friendly_id :code_generator, use: :slugged private # 自定義亂數(方法) def code_generator SecureRandom.hex(10) end ``` ### Step 3: 移動至剛新增:slug欄位的model的controller修改查詢方式 ```ruby= # 路徑: /appname/app/controllers/stories_controller.rb # 在原本的查詢方式加上.friendly才能查詢的到!! def find_story @story = current_user.stories.friendly.find(params[:id]) end ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up