2013-05-09 45 views
2

我有一個Ruby on rails源代碼,現在我想分析數據併發送數據。在我的代碼中,它將從中獲取名稱用戶並顯示它,如何解析ROR中的數據。如何從rails上解析json數據或(json代碼)

這是我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 

如何使用JSON 如何編寫解析這些數據的JSON文件來分析在ROR這些數據,如何做一個

回答

1

方法有很多種:

  1. 每個模型
  2. 創建視圖名爲創建方法to_json,即hotels/index.json.erb寫JSON使用ERb模板引擎的代碼

    [ 
        <% @hotels.each do |hotel| %> 
        { 'id': <%= hotel.id %>, 'name': "<%= hotel.name %>" }, 
        <% end %> 
    ] 
    
  3. 使用圖書館像jbuilder(在頁面的底部是替代品清單的JBuilder)

    # hotels/index.json.jbuilder 
    json.array!(@hotels) do |hotel| 
        json.id hotel.id 
        json.name hotel.name 
    end 
    
+0

你能爲我提供答案嗎?解決方案,我是新來的, – 2013-05-09 12:27:05

+0

如何寫上述控制器的JSON文件,你可以給解決方案 – 2013-05-09 12:46:13

+0

老兄這個答案是否足夠? – 2013-05-10 05:15:59

1

你可以通過to_json方法將哈希轉換爲json。有關參考請參見http://apidock.com/rails/ActiveRecord/Serialization/to_json

例如,如果要將所有酒店寫入外部文件。

file = File.open("hotels.txt", "w") 
file.puts Hotel.all.to_json 
file.close 

這將寫入外部文件的所有酒店hotels.txt

+0

老兄,你可以給你的答案,怎麼寫我controller.I JSON文件是新來的JSON,給我回答我的問題 – 2013-05-09 12:21:05

+0

我想要得到的來自用戶的數據,那在我的代碼中,它是一個scaffolding如何解析數據,哪個用戶提供 – 2013-05-09 12:25:20

+0

可以爲我提供解決方案@Ramiz Raja – 2013-05-09 12:37:19

2
**Answer of my question** 

這部分我們在控制器做 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'