破壊アクションを持つ trackers_controler があります。これらのトラッカーはすべてインデックスの要約テーブルに表示されるため、破棄時に破棄アクションをインデックスにリダイレクトしようとしています。
破棄アクションで、tracker_url にリダイレクトすると、フラッシュ通知が正しく表示されます。しかし、URLにはIDがあります(そうあるべきです)
redirect_to tracker_url, :notice => "Tracker Disabled!"
redirect with the flash notice displaying
/trackers/trackers/5
以下へのリダイレクトを使用してインデックスにリダイレクトすると、URL にフラッシュ通知が表示されますが、メッセージにフラッシュ通知が表示されません。
redirect_to :action => index, :notice => "Tracker Disabled!"
redirects without the flash notice
/trackers?notice=Tracker+Disabled%21
デバッグするために、index.html.erb と show.html.erb からコードをコピーして、同じ場所にメッセージのレンダリングがあるにもかかわらず、URL の一部としてフラッシュ通知を gt にします。メッセージのパーシャルは、layouts/messages フォルダーにあります。
<%= render 'layouts/messages' %>
以下は私のショーとインデックスです
def index
authorize! :view, :silver, :message => 'Access limited to Silver Plan subscribers.'
@new_tracker = Tracker.new
@current_user = current_user
@trackers_enabled = Tracker.enabled.where(:user_id => @current_user.id)
@trackers_disabled = Tracker.disabled.where(:user_id => @current_user.id)
end
def show
authorize! :view, :silver, :message => 'Access limited to Silver Plan subscribers.'
@new_tracker = Tracker.new
@current_user = current_user
@trackers_enabled = Tracker.enabled.where(:user_id => @current_user.id)
@trackers_disabled = Tracker.disabled.where(:user_id => @current_user.id)
end
私の開発ログから、リダイレクト後の投稿がここにあります
SHOW
/trackers/1 にリダイレクトされました 19ms で 302 が見つかりました (ActiveRecord: 13.8ms)
2013-09-14 11:06:06 -0500 で 127.0.0.1 の GET "/trackers/1" を開始しました TrackersController#show による処理 HTML パラメータ: {"id"=>"1"}
INDEX
/trackers?notice=Tracker+Disabled%21 にリダイレクトされました 302 が 19 ミリ秒で見つかりました (ActiveRecord: 13.5 ミリ秒)
2013-09-14 11:06:51 -0500 で 127.0.0.1 の GET "/trackers?notice=Tracker+Disabled%21" を開始しました。TrackersController#index による HTML パラメーターとしての処理: {"notice"=>"Tracker Disabled! "}