5

我正在尝试从 API 访问 Rails 应用程序资源(它发送应用程序/XML GET 请求),并且我不想解析 XML 文件。

在我的资源控制器中,我有以下内容:

def get_resource
    @my_resource = Resources.new
    render :xml => @my_resource
end

它按预期生成一个 xml 文件。如果我将其替换为:

render :layout => false

我的 API 报告“模板丢失”错误。我还尝试了以下方法:

render :xml => @identity, :layout => false

但是页面无论如何都会呈现。解决这个问题的正确方法是什么?

4

2 回答 2

9

渲染 :xml 时,它不使用布局,因为它也不使用任何模板。通过指定 :layout => false,你告诉 rails 去寻找一个不存在的模板。

现在,如果您不想解析 xml 文件,那么您有几个选择。任何一个:

render :json => @my_resource

或者

render :text => "My resource name is: #{@my_resource.name}" # Whatever you want

这完全取决于您希望结果如何,您的 API 期望接收什么。因此,如果您认为这些内容没有任何帮助,请举例说明您希望响应的外观。

于 2010-12-02T12:00:31.713 回答
4
def get_resource
  @my_resource = Resources.new
  respond_to do |wants|
    wants.xml { render :xml => @my_resource }
    wants.html { render :layout => false }
  end
end

阅读这篇文章:http ://tokumine.wordpress.com/2009/09/13/how-does-respond_to-work-in-the-rails-controllers/

于 2010-12-02T12:01:07.473 回答