我的項目,我需要有一個不應該很容易猜到,因爲它是隨對象整數ID的自定義網址。爲了解決這個問題,我給我的對象UNIQUE_ID屬性,它是一個字符串,通過resources :objects
寫道,將產生的七項行動嘍,它看起來像:的Rails 3:自定義寧靜的路線:更改編輯,動作行爲
get '/objects' => 'objects#index', as: :objects
post '/objects' => 'objects#create'
get '/objects/new' => 'objects#new', as: :new_object
get '/:unique_id/edit' => 'objects#edit', as: :edit_object
get '/:unique_id' => 'objects#show', as: :object
put '/:unique_id' => 'objects#update'
delete '/:unique_id' => 'objects#destroy'
它們都工作地很好,我只是要告訴控制器通過尋找替代Object.find_by_unique_id(params[:unique_id])
的Object.find(params[:id])
我可以創建,讀取和刪除完美的對象,但我不能更新。
當我打開它正確呈現形式edit_object_path,但是當我在「更新對象」,它的螺絲點擊了。 從WEBrick輸出中,我可以看到它創建了一個PUT請求,但它請求的是對象的id而不是unique_id。因此,例如,而不是請求PUT /osefushe7398hr9
它表示PUT /26
。更新方法甚至沒有調用,而是它要求創建一個unique_id爲26的新對象。
我真的不知道在哪裏更改該行爲或如何傳遞unique_id而不是id。
你有沒有改變的form_for的網址?我想這就是問題所在。試試form_for @object,url => {update_object_path(@object。unique_id)}並編輯要更新的路由'/:unique_id'=>'objects#update',:as =>:update_object – mohamagdy 2012-02-24 17:58:28
另外,看看這個截屏http://railscasts.com/episodes/314-pretty-urls-with-friendlyid?view = asciicast – mohamagdy 2012-02-24 17:59:23