我已經在我的Rails應用程序Rails的渲染命名爲正確的網址
match '/settings', to: 'Users#edit', as: 'settings'
以下路線和相應的控制器代碼路徑
def edit
@user = current_user
end
def update
correct_user
@user = User.find(params[:id])
if [email protected](params[:old_password])
flash[:error] = 'Old password did not match'
redirect_to settings_path
elsif @user.update_attributes(params[:user])
flash[:success] = "Settings updated"
redirect_to settings_path
else
render 'edit'
end
end
我的編輯頁面是爲現在只需一個密碼更改頁面,當我訪問/settings
時,我看到除了我以外的頁面。當我redirect_to settings_path
,網址仍然/settings
,這是我想要的行爲。
在我的edit
模板中,我有代碼來處理對象錯誤並將它們呈現在頁面上。當render 'edit
時,如果出現對象錯誤,則會觸發此代碼。如果我重定向到頁面,但是,代碼不在那裏。所以我需要撥打render 'edit'
來查看錯誤。
但是,撥打render 'edit'
會導致URL更改爲/users/:id/edit
,這正是我不需要想要的。在撥打render 'edit'
之後,我希望URL保持爲/settings
。我怎樣才能做到這一點?
注意:我已經搜索過網站和互聯網的其他部分,但沒有找到適合我的需求的東西。有一個或兩個SO主題有類似的問題,但他們都使用閃爍和哈克基於重定向的變通辦法,這不是我想要的。
這似乎是工作。謝謝! – mschallert 2012-07-13 20:29:02