我在ruby on rails項目上工作,我想爲Json添加響應。如何在rails中的ruby中創建複雜的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
但也有一些問題,這一點: -
- 我不希望給像密碼哈希JSON響應整個用戶對象和緩存計數器屬性。 Facebook,Twitter的屬性等
- 我想添加更多的細節在json對象(考慮stackoverflow模型)像每個用戶最新問題,每個用戶給出的最新答案。而不是通過回形針存儲在數據庫中的圖像名稱,我想傳遞圖像的完整url。
所以問題是如何編碼json在index.json.erb文件中響應,就像我們在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: - 我只是嘗試使用創建此文件。這僅僅是一個樣品
編輯
編輯
{ { 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"
}
]
現在我想的是附上用戶陣列這個每個響應部分
@YetAnotherGeek你想在用戶模型中看到什麼: - 關係?或屬性? – 2011-06-14 14:49:39
對不起,我沒有完全閱讀你的問題,關於第一個部分問題,你可以使用:only和:除了散列來過濾掉內容。您還可以使用include包含來自其他表的數據。我不知道如何輕鬆修改數據,但不使用JSON gem。 [鏈接](http://apidock.com/rails/ActiveRecord/Serialization/to_json)。 – 2011-06-14 14:51:51
你可以從你的對象生成哈希,並將其他所需的字段(鍵)添加到這個哈希 - 然後通過這個哈希來渲染:json => your_hash沒有明確告訴.to_json哈希 – bor1s 2011-06-14 14:52:50