どのようにすれば、controller.action_nameが正しい情報を返すことができますか?私は、メニューバーにユーザーフレンドリーなメッセージを生成するためにそれに頼っています。以下のシナリオを考えてみましょう。私はレンダリングに使用できる方法はありrailsのaction_nameメソッドの信頼性はどれくらいですか?
render :action => "edit" # The action_name shows as "get" instead of "edit"
:私が使用している場合
ACTION_NAME方法は素晴らしい作品:
redirect_to edit_profile_path # I get action_name as "edit" in my ApplicationController
をしかし、私は次のように使用する場合、それは私が必要な情報を得られませんまだ正しい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
をユーザーが編集モードの場合、基本的に、私は、メニューの「表示に保存されたバージョン」リンクをしたいです。しかし、「レンダリング:アクション」構文を使用すると、アクションが「取得」に変わります。これはミシャが述べたことに基づいて意味があります。ですから、リダイレクトを発行せずにこれを達成できる方法はありますか?私がまだリダイレクトを使用していない唯一の理由は、ユーザーの現在のタブを保持するためのロジックがレンダリング動作で動作することです。これを達成するための唯一の方法がリダイレクトによるものであれば、私はそれを書き直さなければならないかもしれません。
あなたのroutes.rbファイルにはそのアクションの内容は含まれていますか? –
こんにちはフレデリック - 更新されたバージョンをご覧ください。編集ビューを表示する方法で問題をトレースすることができました。 – Tabrez