試圖重寫我的配置文件控制器到目前爲止已被打破。使用friendly_id林有像諧音edit_basics.haml,edit_details.haml等下面的網址新手:與更新/重定向配置文件和friendly_id問題
- /用戶/我/編輯/基礎
- /用戶/我/編輯/利益
- /用戶/ me/edit/details
問題是在更新我的配置文件並在更新後重定向到正確的路徑。 我已搜索並嘗試了幾件事情迄今無濟於事。
- 提交編輯表格後,將其重定向到/型材/我
更新/用戶/我/編輯/基礎知識後,它應該返回到這個位置 的更新拋出
未定義的方法錯誤`的update_attributes'爲#<#:0x007f876e77d768>
{ 「UTF8」=> 「✓」, 「_method」=> 「放」, 「authenticity_token」=> 「wqDebPGdHvXszFvXcaeWwRewA6puTVlv5iCXX1ZD3KU =」 「簡檔」=> { 「形式」=> 「基本」, 「描述」=> 「」}, 「提交」=> 「保存」, 「ID」=> 「名爲myUsername」}
Ofcourse ID不能是用戶名
路線
match '/users/:username' => "profiles#show"
match '/users/:username/edit/:what' => "profiles#edit", :as => :edit_user
更新操作:
def update
@profile = Profile.where(params[:id])
respond_to do |format|
if @profile.update_attributes(params[:profile])
format.html { redirect_to @profile, :action => "edit", :what => @profile.form, notice: 'Profile was correctly updated.' }
else
format.html { @profile, :action => "edit", :what => @profile.form }
end
end
end
編輯操作:
def edit
@profile = Profile.find(params[:username])
what = params[:what]
if not what.nil?
if ["basics", "location", "details", "photos", "interests"].member?(what)
render :action => "edit_#{what}"
else
render :action => "edit_basics"
end
end
末
UPDATE: 似乎id屬性始終包含用戶的用戶名,因此無法更新
我認爲id是好的 - 那就是friendly_id的工作方式。 ID取決於slug列。在更新操作中,嘗試使用find(Profile.find(params [:id])) – zachar 2012-02-29 10:39:25
不確定,但我認爲問題的一部分來自更新操作中的'Profile.where(params [:id])''。這將返回一個關係,而不是記錄。額外的提示:使用'除非'而不是'如果不是',它更紅寶石,爭論更清楚。 – 2012-02-29 11:00:32
@_x我對「if not」語句的想法是一樣的。 而且我會補充說你可以做一些類似'match'/ users /:username/edit(/:what)'=>「profiles#edit」,:defaults => {:what =>「basic」} ,:as =>:edit_user'來允許正常的寧靜風格的網址,而仍然適應更多的解釋性網址。 – Ekampp 2012-02-29 12:39:06