基于数据结果的动态渲染

时间:2014-05-21 17:02:33

标签: ruby-on-rails ruby

我很好奇,如果这是可能的话。我希望根据ruby on rails中的操作结果呈现数据。这是代码:

def convert
  render :text => Item.convert(params[:file], params[:output])
end

正如您目前所看到的,它只是呈现文本。项目模型包含两个参数:文件和输出。输出可以是xml,json,纯文本等。某种类型的数据。我希望能做的是我可以根据输出参数渲染输出。但要让它充满活力。我希望我能做到:

def convert
  @items = Item.convert(params[:file], params[:output])
  respond_to do |format|
    format.json { render :json => @items }
    format.xml { render :xml => @items }
  end
end

会调用该方法并根据返回的数据生成适当的数据。测试上面的代码会返回一个空页面。身体标签完全是空的。

有什么想法吗?

感谢 迈克莱利

1 个答案:

答案 0 :(得分:0)

如果您依靠params[:output]的名称来确定要渲染的内容,我会写如下:

def convert
  @items = Item.convert(params[:file], params[:output])
  if File.extname(params[:output].match("text"))
    render :text => Item.convert(params[:file], params[:output])
  elsif File.extname(params[:output].match("json"))
    render :json => Item.convert(params[:file], params[:output])
  elsif File.extname(params[:output].match("xml"))
    render :xml => Item.convert(params[:file], params[:output])
  else
    render :html => "default_html"
  end
end

如果文件的扩展名与预期的不匹配,您应该有一个default_html.html.erb