1

我正在使用 Gon gem 将一些数据从 Rails 发送到 BackBone。我的application_controller.rb

class ApplicationController < ActionController::Base
  before_action :init_gon

  def init_gon
    gon.me = render_to_string(template: 'users/_me.json.jbuilder')
  end
end

因此,在此之后,如果我打开 Web 应用程序的任何页面,它只会将 html 显示为纯文本:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns="" xmlns="http://www.w3.org/1999/xhtml">
<head>
.....

我该如何处理?

4

1 回答 1

0

我认为您的问题与您将渲染gon数据作为字符串有关。我认为您应该传递数据而无需呈现字符串

我对那个特定部分没有任何经验,但我之前已经gon广泛使用过。这是涵盖该主题的RailsCast片段:

Gon 只需创建一个脚本标签,然后用我们在控制器中设置的数据填充一个 gon 变量。如果我们想要自定义返回给客户端的 JSON,Gon 支持 RABL 和 Jbuilder 模板,这两种模板都已在最近的剧集中进行了介绍。要自定义产品列表返回的数据,我们可以创建一个 index.json.rabl 文件并定义我们希望在其中返回的属性:

/app/views/products/index.json.rabl
collection Product.limit(10)
attributes :id, :name, :price

/app/controllers/products_controller.rb
class ProductsController < ApplicationController
  def index
    gon.rabl "app/views/products/index.json.rabl", as: "products"
  end
end

JBuilder

也许这会有所帮助?有一种方法可以使用 jBuilder 呈现 GON 数据(正如我看到的那样):

#app/controllers/application_controller.rb
def init_gon
    gon.jbuilder template: 'users/_me.json.jbuilder'
end

https://github.com/gazay/gon/wiki/Usage-with-jbuilder

于 2014-03-27T09:45:00.790 回答