0

我有一个带有破坏动作的 trackers_controler。我正在尝试将销毁操作重定向到销毁时的索引,因为所有这些跟踪器都显示在 index.html 的汇总表中。

在我的销毁操作中,当我重定向到 tracker_url 时,我的 flash 通知正确显示。但是 URL 有 id(应该这样)

 redirect_to tracker_url, :notice => "Tracker Disabled!"
 redirect with the flash notice displaying
 /trackers/trackers/5

当我使用下面的重定向重定向到索引时,它会在 url 中显示 flash 通知,但不会在消息中显示 flash 通知。

redirect_to :action => index, :notice => "Tracker Disabled!"
redirects without the flash notice
/trackers?notice=Tracker+Disabled%21

为了调试,我从 index.html.erb 和 show.html.erb 复制了代码,这样它们是相同的,并且仍然将 flash 通知作为 url 的一部分,即使它们都在同一个位置呈现消息。消息的部分位于 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 Completed 302 Found in 19ms (ActiveRecord: 13.8ms)

在 2013-09-14 11:06:06 -0500 开始 GET "/trackers/1" for 127.0.0.1 由 TrackersController#show 作为 HTML 参数处理:{"id"=>"1"}

INDEX

重定向到 /trackers?notice=Tracker+Disabled%21 Completed 302 Found in 19ms (ActiveRecord: 13.5ms)

开始 GET "/trackers?notice=Tracker+Disabled%21" for 127.0.0.1 at 2013-09-14 11:06:51 -0500 由 TrackersController#index 作为 HTML 参数处理:{"notice"=>"Tracker Disabled! "}

4

1 回答 1

0

这条线有问题

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

通知部分成为代码中 #index 的参数,而不是redirect_to.

要修复,请使用命名路径。假设您的索引页路径是trackers_path,那么

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