Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails AbstractController::DoubleRenderError(在此操作中多次调用渲染和/或重定向,而不是重复_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails AbstractController::DoubleRenderError(在此操作中多次调用渲染和/或重定向,而不是重复

Ruby on rails AbstractController::DoubleRenderError(在此操作中多次调用渲染和/或重定向,而不是重复,ruby-on-rails,ruby,Ruby On Rails,Ruby,我知道这个错误AbstractController::DoubleRenderError(渲染和/或重定向)在多次渲染时会多次调用 但已使用解决方案并返回 class FrequentMethodController < ApplicationController def post_exist?(post_id) post = Post.find_by_id(post_id) render_json('post_not found', 400, 'msg') unles

我知道这个错误AbstractController::DoubleRenderError(渲染和/或重定向)在多次渲染时会多次调用

但已使用解决方案
并返回

class FrequentMethodController < ApplicationController
  def post_exist?(post_id)
    post = Post.find_by_id(post_id)
    render_json('post_not found', 400, 'msg') unless post
    return post
  end
  def render_json(data, status_code, main_key = 'data')
    render json: { "#{main_key}": data }, status: status_code and return 
  end
end

class PostController < FrequentMethodController
  def view_post
     post_id = params[:post_id]
     post = post_exist?(post_id)
     # test code 
     render_json(post, 1, 'data')
 end
end
使用
'rails',5.1.4'

类FrequentMethodController
def view_post
  post_id = params[:post_id]
  if post = post_exist?(post_id)
    # test code 
    render_json(post, 1, 'data')
  end
end

使用另一个控制器调用时未解决问题
PostController
我不理解您的评论。您为什么还要创建
FrequentMethodController
?只需使用
ApplicationHelper
跨控制器重用方法。PostController应该直接从ApplicationController继承。I在FrequentMethodController中添加FrequentMethod并继承到其他controllers@TalaatMagdy,请参阅我的更新。我认为您已经偏离了轨道。我认为您将更容易遵守路由和控制器的标准约定。
def view_post
  post_id = params[:post_id]
  if post = post_exist?(post_id)
    # test code 
    render_json(post, 1, 'data')
  end
end