我有三个控制器操作,列出同一对象的不同范围工作流类型。在同一个控制器中,我有另一个动作,它根据在视图中单击的内容对对象执行状态更改。我在方法中放置了一个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如何在类中暴露变量缺乏了解,我不知道。
答案 0 :(得分:2)
request_url
操作未调用 toggle_field
:您使用except: [:toggle_field]
明确排除它。请尝试删除except: [:toggle_field]
。