Reputation: 350
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.
This is my controller.rb code
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
Upvotes: 2
Views: 1443
Reputation: 350
**Answer of my question**
This part we have to do in controller 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
[
<% @hotels.each do |hotel| %>
{ 'id': <%= hotel.id %>, 'name': "<%= hotel.name %>" },
<% end %>
]
routes.rb
get 'hotels' => 'hotels#index', :as => 'hotels'
Upvotes: 2
Reputation: 23586
There are many ways:
to_json
for each modelCreate view named, i.e. hotels/index.json.erb
and write JSON code using ERb templating engine
[
<% @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)
# hotels/index.json.jbuilder
json.array!(@hotels) do |hotel|
json.id hotel.id
json.name hotel.name
end
Upvotes: 1
Reputation: 6030
You can covert a hash to json by to_json
method. For reference please see 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
Upvotes: 1