从辅助函数渲染并返回

时间:2015-08-25 21:10:22

标签: ruby-on-rails ruby-on-rails-4

我在不同的控制器中有多个动作,通过法拉第使用application_helper中定义的辅助函数进行第三方API调用。

现在,如果响应成功,它们会有不同的渲染视图,但需要发送json,如果有任何错误,则会收到。 直接在动作中使用以下代码

if (r[:error] && r[:code]==403)
    Rails.logger.info "Exiting"
    render :json => body and return
end

但是如果我将它移动到辅助函数并从动作中调用辅助函数,则执行不会停在那里并一直持续到动作结束时它会引发DoubleRendererError。

可以做任何事情来让控制器停止处理并从帮助器返回自己(以避免在我进行第三方API调用的每个操作中放置这4行)

2 个答案:

答案 0 :(得分:1)

def blank_fields?(params)
if params["user"]["email"].blank? || params["user"]["password"].blank? || params["user"]["password_confirmation"].blank?
  render json: { status: 422, message: "Your email, password or password confimation is blank. Please check that all fields are filled in and try again!" }, status: 422
  return true # pass back to guard clause
end
end

做这样的事情,并从你的控制器方法中调用这个方法,也就是:

return if blank_fields?(params)

答案 1 :(得分:0)

滑轨'帮助程序用于从视图进行调用,并且它们使用render的方式是从控制器调用的。您可以从控制器内调用帮助程序,但通常不需要。如果您希望某些功能可供所有控制器使用,您通常会将它放在ApplicationController中。

当您在视图中调用渲染时,它将尝试渲染您调用它的模板中的部分。