繼以下兩個網友的wiki和railscast我試着重寫和重定向我的網址,如果我的用戶模型的名稱已更改。遺憾的是,沒有發生。我跑了適當的遷移:FriendlyID歷史記錄不適用於Rails中的更新模型網址
rails generate friendly_id
rails generate migration add_slug_to_artists slug:string:uniq
rake db:migrate
並應用此代碼按照指示,但無濟於事。在最初創建模型實例後,url保持不變。
藝術家型號
extend FriendlyId
friendly_id :name, use: [:slugged, :history]
用戶控制器
class ArtistssController < ApplicationController
before_action :set_artist, only: [:show, :edit, :update, :destroy]
def show
if request.path != user_path(@artist)
redirect_to @artist, :status => :moved_permanently
end
end
def update
if @artist.update_attributes(artist_params)
flash[:notice] = 'Artist successfully updated'
redirect_to @artist
else
render 'edit'
end
private
# Use callbacks to share common setup or constraints between actions.
def set_artist
@artist = Artist.friendly.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def artist_params
params.require(:artist).permit(:name)
end
end
所以我不知道這是否是問題你沒有張貼代碼爲'update'方法,但是你需要設置'爲了重新生成「slug」到「nil」。 – 2014-11-01 04:17:31
@ViniciusPinto我已更新我的問題以顯示更新操作中的內容(從腳手架生成的默認代碼)。你會推薦我做什麼? – 2014-11-01 04:39:52
在調用'update_attributes()' – 2014-11-01 04:51:23