标签: jbuilder

Rails:渲染Json状态问题

当我

  render json: {
    error: "No such user; check the submitted email address",
    status: 400
  }
Run Code Online (Sandbox Code Playgroud)

然后做我的测试并检查

response.code
Run Code Online (Sandbox Code Playgroud)

我得到200而不是400

我肯定这个荒谬简单的答案,但我一直在寻找一个小时,似乎无法让这个工作.我可以解析Json,然后检查状态代码......但是有没有办法让response.code返回状态?我理解技术上它是成功的,我认为这就是为什么response.code返回200,但我之前使用的是Jbuilder,直接影响返回的代码.

json ruby-on-rails jbuilder

37
推荐指数
1
解决办法
3万
查看次数

用于Rails 4中JSON处理的jbuilder vs rails-api/active_model_serializers

我已经开始了Rails 4.

在处理JSON格式数据时,我发现我们可以使用rails/jbuilder并且运行良好.

但是,当我拿着Codeschool的Rails 4 Pattern时,他们提到了gem active_model_serializers.

对于active_model_serializersgem而言,所有JSON序列化逻辑都会进入Model(被认为是最佳实践).

而对于jbuildergem,我们需要编写带扩展名的单独视图文件.json.jbuilder.

我的问题是:

  • 哪一个是JSON数据处理的理想选择
  • 两者之间的任何性能差异

ruby ruby-on-rails jbuilder active-model-serializers ruby-on-rails-4

35
推荐指数
1
解决办法
9369
查看次数

为什么JBuilder在测试RSPEC时没有在JSON中返回响应体

当使用DHH的JBuilder测试来自RSPEC控制器测试的JSON响应时,我的response.body总是"{}".它在开发/生产模式下工作正常.当我使用to_json方法而不是jbuilder时,我在response.body中获得了正确的JSON.

任何人都有一个线索,为什么我的response.body在测试时总是"{}"?

-----调试器

它"应该通过JSON返回购物车项目",:焦点做

get:index,:format =>:json
end

(rdb:1)response.body

"{}"

json rspec ruby-on-rails jbuilder

28
推荐指数
2
解决办法
5612
查看次数

JBuilder中未定义的局部变量或方法`json'

当我尝试获取所有类别(索引操作)时出现错误:

undefined local variable or method `json'
Run Code Online (Sandbox Code Playgroud)

但在展示行动一切都很好.所有文件都有.jbuilder扩展名.这是控制器代码:

def index
  @categories = Category.all
end

# GET /categories/1
# GET /categories/1.json
def show
  @category = Category.find(params[:id])
end
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪:

app/views/categories/index.json.builder:1:在_app_views_categories_index_json_builder___502133872307116590_70140532925300' actionpack (3.2.11) lib/action_view/template.rb:145:in渲染块'
activesupport(3.2.11)lib/active_support/notifications.rb:125:in render'中instrument'
actionpack (3.2.11) lib/action_view/template.rb:143:in

json ruby-on-rails jbuilder

26
推荐指数
1
解决办法
8217
查看次数

如何使用Rails Jbuilder提取所有属性?

在jbuilder.json模板中一直编写这样的代码是一件痛苦的事:

json.extract! notification, :id, :user_id, :notice_type, :message, :resource_type, :resource_id, :unread, :created_at, :updated_at
Run Code Online (Sandbox Code Playgroud)

所以我想像这样编码;

json.extract_all! notification
Run Code Online (Sandbox Code Playgroud)

我发现我可以像下面的代码那样做,但它们对我来说仍然有点冗长.

notification.attributes.each do |key, value|
  json.set!(key, value)
end
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法?

ruby-on-rails jbuilder

25
推荐指数
2
解决办法
1万
查看次数

rails jbuilder - 只是一个字符串数组

我有一个控制器,它返回一个ActiveRecord对象数组和一个jbuilder视图来生成json(所有标准的东西).如果我想要一个哈希数组,那么效果很好.

所以例如我有:

json.array!(@list) do |l|
    json.( l, :field )
end
Run Code Online (Sandbox Code Playgroud)

返回

[
  { "field": "one" },
  { "field": "two" },
  { "field": "three" }
]
Run Code Online (Sandbox Code Playgroud)

但是,我只想要一个字符串数组; 这样我的json就是

[
  "one",
  "two",
  "three"
]
Run Code Online (Sandbox Code Playgroud)

我的jbuilder文件应该是什么?

arrays json ruby-on-rails jbuilder

24
推荐指数
2
解决办法
2万
查看次数

我怎样才能将字符串呈现为JBuilder视图的JSON表示?

我正在使用JBuilder来返回一些JSON.我有一个index.json.jbuilder生成数据,我需要将其渲染为字符串.但是,我不知道如何做到这一点,因为:@my_object.to_json并且@my_object.as_json似乎没有通过JBuilder.

我怎么能将JBuilder视图渲染为字符串?

json ruby-on-rails jbuilder

22
推荐指数
3
解决办法
2万
查看次数

在html视图中渲染JBuilder视图

我用JBuilder创建了一个json视图.但我想将其预加载到数据对象中,因此Backbone可以在不提取数据的情况下尽早访问数据.

如何将list.json.jbuilder视图呈现到list.html.erb视图中?

通常没有jbuilder,我会做这样的事情:

<div data-list="<%= @contents.to_json %>"></div>
Run Code Online (Sandbox Code Playgroud)

json jbuilder ruby-on-rails-3

21
推荐指数
1
解决办法
6668
查看次数

产生哈希的JBuilder循环

我需要循环产生哈希,而不是对象数组.我有这个:

json.service_issues @service.issues do |issue|
  json.set! issue.id, issue.name
end
Run Code Online (Sandbox Code Playgroud)

结果:

service_issues: [
  {
    3: "Not delivered"
  },
  {
    6: "Broken item"
  },
  {
    1: "Bad color"
  },
  {
    41: "Delivery problem"
  }
]
Run Code Online (Sandbox Code Playgroud)

我需要这个:

service_issues: {
   3: "Not delivered",
   6: "Broken item",
   1: "Bad color",
   41: "Delivery problem"
}
Run Code Online (Sandbox Code Playgroud)

是否可以在不将AR结果手动转换为哈希的情况下执行此操作?

json ruby-on-rails jbuilder

17
推荐指数
1
解决办法
1万
查看次数

用于模型属性的JBuilder动态键

我正在尝试构建一个JSON文件,以通过变体代码访问产品的变体.理想情况下,我可以调用variations.abcdefgh,基本上要求定义这样的结构:

{
   "variations":{
      "abcdefgh":{
         "available":true,
         "price":"12.00"
      },
      "ijklmnop":{
         "available":false,
         "price":"25.00"
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

在products/show.json.jbuilder中做一些事情

json.variations @product.variations
Run Code Online (Sandbox Code Playgroud)

给我格式化如下:

{
   "variations":[
      {
         "available":true,
         "price":"12.00",
         "product_code":"abcdefgh"
      },
      {
         "available":true,
         "price":"25.00",
         "product_code":"ijklmnop"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

也许我的JavaScript可能会更好,但我想要一些基于product_code更容易访问的东西.我得到的最接近的是

@product.variations.each do |variation|
   json.set! variation.product_code, variation
end
Run Code Online (Sandbox Code Playgroud)

但我还没有找到一个解决方案,将这些正确格式化的对象作为子项放入变体属性中.有没有人遇到过类似的事情?

json ruby-on-rails jbuilder

17
推荐指数
1
解决办法
8329
查看次数