如何確保controller.action_name返回正確的信息?我依靠它在菜單欄中生成用戶友好的消息。考慮以下情況。當我使用rails中的action_name方法有多可靠?
的ACTION_NAME方法的偉大工程:
redirect_to edit_profile_path # I get action_name as "edit" in my ApplicationController
但是當我用下面的它不會產生我需要的信息:
render :action => "edit" # The action_name shows as "get" instead of "edit"
有沒有一種方法,我可以使用渲染行動,仍然得到正確的action_name?
感謝, Tabrez
----響應米沙的評論代碼段----
這是我在控制器:
def update
if @profile.update_attributes(params[:profile])
format.html {
flash.now[:notice] = 'Profile was successfully updated.'
render :action => "edit"
}
end
我不是重定向,因爲我仍然希望用戶保持編輯模式。
在我的應用助手我的代碼如下效果:
if(action_name == "edit" && (can? :read, l_disp_object)) then
path_links_subheader.concat(link_to 'Show Saved Version', :controller => controller.controller_path, :action => :show)
end
基本上,如果用戶在編輯模式下,我想在菜單上的「查看保存的版本」鏈接。但是,當我使用「render:action」語法時,動作變爲「get」,這基於Mischa提到的內容(動作是一個用詞不當的地方)。那麼,有沒有一種方法可以在不發佈重定向的情況下完成此任務?我沒有使用重定向的唯一原因是保留用戶當前選項卡的邏輯適用於渲染操作。如果唯一可行的方法是通過重定向,我可能不得不重寫它。
該行爲的routes.rb文件中有什麼? – 2012-03-29 23:06:17
嗨弗雷德裏克 - 請參閱最新版本。我能夠將問題追溯到顯示編輯視圖的方式。 – Tabrez 2012-03-29 23:11:47