0

破壊アクションを持つ 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! "}

4

1 に答える 1

0

この行には問題があります

redirect_to :action => index, :notice => "Tracker Disabled!"

通知部分は、コード内の #index の引数ではなく、 param になりますredirect_to

修正するには、名前付きパスを使用します。インデックス ページのパスがtrackers_pathであるとします。

redirect_to trackers_path, :notice => "Tracker Disabled!"
于 2013-09-14T16:18:20.293 に答える