存储用于重定向rails的URL作为“重定向循环”的解决方案'错误

时间:2014-08-01 20:17:29

标签: ruby-on-rails ruby

我有三个控制器操作,列出同一对象的不同范围工作流类型。在同一个控制器中,我有另一个动作,它根据在视图中单击的内容对对象执行状态更改。我在方法中放置了一个redirect_to request.referer来切换状态但如果重复点击链接会导致循环错误。 所以我尝试了这个

  before_action :request_url, except: [:toggle_field]
  def rejected
    @workflow_body = 'Rejected'
    @entries = Photo.with_rejected_state.page(params[:page]).per(10)
  end

  def toggle_field
    raise
    if @entry.toggle_state!(params[:approve], @entry)
      flash[:notice] = "The entry was #{@entry.workflow_state}"
    else
      flash[:error] = "There was a problem"
    end    
    redirect_to @location
  end

private

  def request_url
    @location = request.original_url
  end 

这不起作用。到达toggle_field重定向时,该变量为nil。我认为可能是我对Ruby如何在类中暴露变量缺乏了解,我不知道。

1 个答案:

答案 0 :(得分:2)

request_url操作未调用

toggle_field:您使用except: [:toggle_field]明确排除它。请尝试删除except: [:toggle_field]