根据用户所在的特定视图创建条件。 (导轨)

时间:2016-02-11 21:03:36

标签: ruby-on-rails

我有一个管理工具,我有玩家。在玩家中我有一个索引页面,但我也有一个搜索页面。在搜索页面中,我有一些搜索参数,然后在其下面呈现索引表。现在每个玩家我都有能力启用或禁用它们。我面临的问题是,在我的控制器中我的启用/禁用方法我被重定向到我的玩家根路径。这显然是在我添加搜索功能之前创建的。

我正在尝试做的是将路线保持在正确的位置。因此,如果我在索引中并为其中一个玩家点击禁用,我希望它保留在索引页面内。同样,如果我在搜索页面上并点击禁用/启用,我希望它重定向回搜索页面而不是索引页面。

以下是我的代码。我真的尝试过在控制器内的重定向路由中工作,但是遇到了与它们不一致的问题。

在我的控制器中我有这个。

def disable
 if @player.disable!
   flash[:notice] = 'Player was successfully disabled.'
 else
   flash[:notice] = 'Failed to disable player.'
 end

 if search_player_path.present?
   redirect_to search__player_path
 else
   redirect_to player_path
 end
end

def enable
 if @player.enable!
   flash[:notice] = 'Player was successfully enabled.'
 else
   flash[:notice] = 'Failed to enable player.'
 end

 if search_players_path.present?
   redirect_to search_players_path
 else
   redirect_to players_path
 end
end

我的路线文件就像这样

  resources :players do
  match :import, action: :import, as: :import, via: [:get, :post], on: :collection
  member do
    put :enable
    put :disable
    put :unexpire
    put :resend_invite
  end
  collection do
    get :search
  end
end

最后在我通过索引页面呈现的表格中(因此在我的搜索页面中再次使用)这是在前端。 (我知道......前端的逻辑,请原谅我)我有

 %td.td-actions
.row-fluid
  = render partial: "zipadmin/shared/table_actions", locals: {resource: patient, actions: [:read, :update]}
  -if player.disabled?
    = link_to enable_player_path(player), :method=>:put, class: 'btn btn-small btn-success' do
      %i.fa.fa-plus
      Enable
  - else
    = link_to disable_player_path(player), :method=>:put, class: 'btn btn-small btn-warning' do
      %i.fa.fa-minus
      Disable

1 个答案:

答案 0 :(得分:1)

在你的控制器中,只需redirect_to:back

这会将用户带回他们离开的任何页面。我认为这是你的问题,但我不确定。如果没有,我很乐意调整我的回应。