[英]How to parse the json data or (json code) from Ruby on rails
I have an Ruby on rails source,code now i want to parse the data, and send the data.In my code,it will fetches the name from user and display it,How to parse the data in ROR. 我有一个Ruby on Rails源代码,现在我想解析数据并发送数据。在我的代码中,它将从用户那里获取名称并显示它,如何在ROR中解析数据。
This is my controller.rb code 这是我的controller.rb代码
def index
@hotels = Hotel.all
respond_to do |format|
format.html # index.html.erb
format.json { render json: @hotels }
end
end
# GET /hotels/1
# GET /hotels/1.json
def show
@hotel = Hotel.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @hotel }
end
end
# GET /hotels/new
# GET /hotels/new.json
def new
@hotel = Hotel.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @hotel }
end
end
# GET /hotels/1/edit
def edit
@hotel = Hotel.find(params[:id])
end
# POST /hotels
# POST /hotels.json
def create
@hotel = Hotel.new(params[:hotel])
respond_to do |format|
if @hotel.save
format.html { redirect_to @hotel, notice: 'Hotel was successfully created.' }
format.json { render json: @hotel, status: :created, location: @hotel }
else
format.html { render action: "new" }
format.json { render json: @hotel.errors, status: :unprocessable_entity }
end
end
end
# PUT /hotels/1
# PUT /hotels/1.json
def update
@hotel = Hotel.find(params[:id])
respond_to do |format|
if @hotel.update_attributes(params[:hotel])
format.html { redirect_to @hotel, notice: 'Hotel was successfully updated.' }
format.json { head :no_content }
else
format.html { render action: "edit" }
format.json { render json: @hotel.errors, status: :unprocessable_entity }
end
end
end
# DELETE /hotels/1
# DELETE /hotels/1.json
def destroy
@hotel = Hotel.find(params[:id])
@hotel.destroy
respond_to do |format|
format.html { redirect_to hotels_url }
format.json { head :no_content }
end
end
How to parse these data in ROR using Json HOw to write parsing json file for these data,how to do that one 如何使用Json HOw在ROR中解析这些数据以为这些数据编写解析json文件,该怎么做
**Answer of my question**
This part we have to do in controller hotelscontroller.erb 这部分我们必须在控制器hotelscontroller.erb中完成
respond_to :json, :xml
def index
@hotels = Hotel.all
respond_to do |format|
format.html # show.html.erb
format.json { render json: @hotels.to_json(:only => [ :id, :name ]) }
end
end
view/index.json.erb 视图/ index.json.erb
[
<% @hotels.each do |hotel| %>
{ 'id': <%= hotel.id %>, 'name': "<%= hotel.name %>" },
<% end %>
]
routes.rb 的routes.rb
get 'hotels' => 'hotels#index', :as => 'hotels'
You can covert a hash to json by to_json
method. 您可以使用
to_json
方法将哈希值隐藏到json中。 For reference please see http://apidock.com/rails/ActiveRecord/Serialization/to_json 有关参考,请参见http://apidock.com/rails/ActiveRecord/Serialization/to_json
for example, if you want to write all hotels to external file. 例如,如果要将所有酒店写入外部文件。
file = File.open("hotels.txt", "w")
file.puts Hotel.all.to_json
file.close
this will write all hotels in external file hotels.txt
这会将所有酒店写入外部文件
hotels.txt
There are many ways: 有很多方法:
to_json
for each model to_json
Create view named, ie hotels/index.json.erb
and write JSON code using ERb templating engine 创建名为
hotels/index.json.erb
视图,并使用ERb模板引擎编写JSON代码
[ <% @hotels.each do |hotel| %> { 'id': <%= hotel.id %>, 'name': "<%= hotel.name %>" }, <% end %> ]
Use library like jbuilder
(on the bottom of page is list of alternatives to JBuilder) 使用像
jbuilder
这样的库(在页面底部是JBuilder替代品的列表)
# hotels/index.json.jbuilder json.array!(@hotels) do |hotel| json.id hotel.id json.name hotel.name end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.