1

我需要在控制器中渲染一个部分,而不是作为对请求的响应。问题是,如果我render :partial => 'foo'像在视图中那样调用,控制器会认为我正在呈现响应。然后稍后当我呈现真正的预期响应(或重定向)时,我得到了一个很棒的ActionController::DoubleRenderError.

class SalesController < ApplicationController
  def send_content_to_some_api
    @sale = Sale.find params[:id]
    SomeApi.send_content(
      render(:partial => 'some_content',
             :locals => { :sale => @sale })
    )

    flash[:notice] = 'Totally just sent that content!'
    redirect_to sale_path(@sale)
  end
end

我可以通过将它放在视图中来解决这个问题,但这似乎破坏了 MVC,并使重定向更加混乱。

如何在控制器不尝试将其用作响应的情况下获得字符串中的部分结果?

4

1 回答 1

2

ActionController::Base#render_to_string

于 2012-10-05T22:16:08.733 回答