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请求才能正常工作?但我想说的是,这是一个不同的问题/错误,你可能想为这个问题提出一个新的问题。