我试图用html和js调用来渲染不同的东西。我将在ajax调用中处理json结果。
我一直收到双重渲染错误,说我不能同时使用渲染和重定向。但它们适用于不同的呼叫,所以它不重要吗?
我试图寻找答案但找不到答案。
感谢。
以下是我的代码:
def create
service = ServiceCall.new.call
if this
if abc
set_flash('success')
else
set_flash('notice')
end
respond_to do |format|
format.html { redirect_to(log_in_path) && return}
end
elsif that
respond_to do |format|
format.html { redirect_to(root_path) && return}
end
end
respond_to do |format|
format.js { render json: service, status: :ok }
end
end
答案 0 :(得分:1)
也许return
不能像您期望的那样工作,并且您的块不会在当前方法中执行。它被用作链下游的参数。所以你不要离开当前的方法。一种可能的解决方案:
def create
service = ServiceCall.new.call
redirect_path = if this
if abc
set_flash('success')
else
set_flash('notice')
end
log_in_path
elsif that
root_path
end
respond_to do |format|
format.html { redirect_to(redirect_path) }
format.js { render json: service, status: :ok }
end
end