Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 渲染多重LPE时间-rails中的双重渲染_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 渲染多重LPE时间-rails中的双重渲染

Ruby on rails 渲染多重LPE时间-rails中的双重渲染,ruby-on-rails,ruby,Ruby On Rails,Ruby,如何避免这种双重渲染问题,我一直在尝试复制,但无法复制。那么下面的代码有什么问题吗 def check_count assign_values_from_params if count >= failed_count render partial: params[:view_name], layout: false and return else render text: 'works' and return end end def assign_val

如何避免这种双重渲染问题,我一直在尝试复制,但无法复制。那么下面的代码有什么问题吗

def check_count
  assign_values_from_params
  if count >= failed_count
    render partial: params[:view_name], layout: false and return
  else
    render text: 'works' and return
  end
end


def assign_values_from_params
  # code
  # code
  # code
  if @date.blank?
    redirect_to main_index_path and return
  end

  if @counted_obj != 5
    # call one function
  end
end

我也应该这样做吗?

render partial:params[:view_name],layout:false中删除return语句,并返回
,因为在渲染后它将导致返回nil。从两行中删除return语句,它应该是固定的


它应该类似于这样的
渲染文本:“works”
使用
return
在渲染后将返回
nil
,因此我建议您从两个渲染中删除
return
,如下所示。

如果tmp\u计数>=计数失败
渲染部分:参数[:视图名称],布局:false
其他的
渲染文本:“作品”
结束


希望这对您有用。

首先,请检查是否调用了任何渲染。在浏览代码时,它不会显示,但可能会在内部调用它。所以你可以打电话给我?在控制器中检查是否已调用渲染:

performed?               # => false
render partial: params[:view_name], layout: false
performed?               # => true 
def check_count
  assign_values_from_params

end


def assign_values_from_params
  # code
  # code
  # code
  if @date.blank?
    redirect_to main_index_path and return
  else
    if @counted_obj != 5
      # call one function
    end

    if count >= failed_count
      render partial: params[:view_name], layout: false and return
    else
      render text: 'works' and return
    end
  end

end
是否执行了呼叫?如果第一次为true,则必须检查代码

调用以检查是否已发生
渲染
重定向

您可能希望将to代码更改为以下内容:

def check_count
  assign_values_from_params

  return if performed?

  if count >= failed_count
    render(partial: params[:view_name], layout: false)
  else
    render(text: 'works')
  end
end

def assign_values_from_params
  # code

  if @date.blank?
    redirect_to(main_index_path) and return
  end

  # code
end

试试这个,看看它是否适合你

def check_count
  assign_values_from_params

end


def assign_values_from_params
  # code
  # code
  # code
  if @date.blank?
    redirect_to main_index_path and return
  else
    if @counted_obj != 5
      # call one function
    end

    if count >= failed_count
      render partial: params[:view_name], layout: false and return
    else
      render text: 'works' and return
    end
  end

end

你确定这会解决这个问题吗?因为在出现这个问题之前我无法复制它,我们这样说,我想知道为什么一开始会出现双重渲染错误。问题中的代码无法产生该错误,因为每个分支只有一个
render
调用。我认为你的问题缺少一些相关的代码。请发布错误消息和堆栈跟踪。我已经更新了代码@spickermanno,您正在帮助器方法中调用
重定向到
,从帮助器返回,然后继续执行并调用
渲染
。因此出现了双重渲染——一次是使用
重定向到
,一次是使用
渲染
。让我尝试一下我尝试用这种方法复制的结果?在提出解决方案之前,幸运的是,我现在得到了真正的错误,它表明您正在被重定向?你如何申请该页面?通过JavaScript获取普通HTML?您的浏览器需要什么内容类型?看起来
check\u count
不会返回有效的HTML,而
重定向到
需要正常的HTML请求才能正常工作?但我想说的是,这是一个不同的问题/错误,你可能想为这个问题提出一个新的问题。