如何在调用redirect_to后停止执行

时间:2017-05-03 12:06:21

标签: ruby-on-rails

我写了一个动作再次调用另一个私有方法, 如果满足特定条件,我想重定向到其他页面,否则继续执行。 但我无法做到, 当我试图使用redirect_to root_path时,它表示双重渲染, 它实际上是试图执行实际调用的动作语句,而不是从私有方法渲染。

def actual_method_called
  data1 = params[:data1]
  method_2(data1)
  data2 = params[:data1]
  method_2(data2)
  render json: {status: 'ok' }
end

private

def method_2(data)
  if data.valid?
   puts 'continue the execution'
  else
   redirect_to root_path and return
  end
end

1 个答案:

答案 0 :(得分:1)

您可以从被调用的方法返回一个值...

def method_2(data)
  if data.valid?
   puts 'continue the execution'
   return
  else
   redirect_to root_path 
    return :redirected 
  end
end

温你称之为存储返回值

def actual_method_called
  data1 = params[:data1]
  return_status ||= method_2(data1)
  data2 = params[:data1]
  return_status ||= method_2(data2)
  render json: {status: 'ok' } unless return_status == :redirected
end