gpt4 book ai didi

ruby-on-rails - 如何在 ruby​​ in rails 中创建复杂的 Json 响应

转载 作者:数据小太阳 更新时间:2023-10-29 06:33:37 25 4
gpt4 key购买 nike

我正在做 ruby​​ on rails 项目,我想添加对 Json 的响应。

一个简单的方法是:--

def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
format.json { render :json => @users.to_json }
end
end

但是这有一些问题:-

  1. 我不想在 json 响应中提供整个用户对象,例如密码哈希和缓存计数器属性。 Facebook、twitter 属性等
  2. 我想在 json 对象中添加更多详细信息(考虑到 stackoverflow 模型),例如每个用户的最新问题,每个用户给出的最新答案。我想传递图像的完整 url,而不是通过回形针存储在 db 中的图像名称。

所以问题是如何在 index.json.erb 文件中编码 json 响应,就像我们在 index.html.erb 中所做的那样。根据需要格式化您自己的 json 响应。

编辑

def index
@users = User.all
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @users }
format.json { render :file => "index.json.erb", :content_type => 'application/json' }
end
end

index.json.erb 文件:-

    <% @users.each do |user| %>
{
first_name: <%= user.first_name %>,
last_name: <%= user.last_name %>
}

<% end %>

错误:--

缺少模板。

PS:-- 我只是尝试使用创建这个文件。这只是一个例子

编辑

enter image description here

编辑

 { { first_name: Mohit , last_name: Jain } { first_name: Sahil Miglani, last_name: } { first_name: Hitesh Bansal, last_name: } { first_name: Sudhanshu, last_name: } { first_name: Saakshi, last_name: } { first_name: Kutta, last_name: } { first_name: bc, last_name: } { first_name: hey, last_name: } { first_name: fewhjfbwfb, last_name: vdsv } } 

编辑

    [ { first_name: Mohit , last_name: Jain } , { first_name: Sahil Miglani, last_name: } , { first_name: Hitesh Bansal, last_name: } , { first_name: Sudhanshu, last_name: } , { first_name: Saakshi, last_name: } , { first_name: Kutta, last_name: } , { first_name: bc, last_name: } , { first_name: hey, last_name: } , { first_name: fewhjfbwfb, last_name: vdsv } ] 

编辑,非常接近找到解决方案:-

    [
<% @users.each_with_index do |user,index| %>
{
<%= "first_name".to_json.html_safe %>: <%= user.first_name.to_json.html_safe %>,
<%= "last_name".to_json.html_safe %>: <%= user.last_name.to_json.html_safe %>
}
<% unless index== @users.count - 1%>
,
<% end %>
<% end %>
]

回应:-

    [

-
{
first_name: "Mohit "
last_name: "Jain"
}
-
{
first_name: "Sahil Miglani"
last_name: null
}
-
{
first_name: "Hitesh Bansal"
last_name: null
}
-
{
first_name: "Sudhanshu"
last_name: null
}
-
{
first_name: "Saakshi"
last_name: null
}
-
{
first_name: "Kutta"
last_name: null
}
-
{
first_name: "bc"
last_name: null
}
-
{
first_name: "hey"
last_name: null
}
-
{
first_name: "fewhjfbwfb"
last_name: "vdsv"
}

]

现在我只想将每个响应部分包含在用户数组中

最佳答案

您可以通过在模型中实现代码来自定义输出:

def as_json(options={})
super(:only => [:name, :email])
end

然后在你的 Controller 中你可以使用:

render :json => @user

有关详细信息,请参阅“Rails to_json or as_json?”。

关于ruby-on-rails - 如何在 ruby​​ in rails 中创建复杂的 Json 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6345383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com