用Rabl渲染html

时间:2013-07-30 14:55:10

标签: ruby-on-rails json api rabl

我正在试图弄清楚如何使用Rabl呈现只是 html。我有一个没有对象的html部分,到目前为止我所能看到的只是带有对象的部分的例子。如果我在没有对象的情况下尝试它,它(显然)会抛出错误。

我最接近的是:

node(:content) do
    partial("api/v1/api/partials/tips")
end

Here is the documentation for Rabl

更新

我最终只是在下面这样做了。明显对吗?出于某种原因,当我第一次尝试它时,它没有用。因此,对于仅在API响应中发送HTML,这很有效。

  def tips
    render partial: "api/v1/api/partials/tips"
  end

2 个答案:

答案 0 :(得分:3)

在rabl视图中,例如show.v1.rabl您可以使用以下内容(rails 4.1.2)呈现视图部分:

object @your_object

code :html do
  context_scope.controller.render_to_string(

     # from app/views/
    partial: 'path/to/show.html.erb',

     # locals (if needed)
    locals: { 
      your_object: @your_object
    }

  )
end

答案 1 :(得分:0)

这可以通过在Rabl节点内渲染ERB模板来实现:

object @user

node(:html_content) do |user|
  @user = user
  template = Rails.root.to_s + '/app/views/api/users/show.html.erb'
  ERB.new(File.read(template)).result(self.binding)
end