2

我有一个 Ruby on rails 源代码,现在我想解析数据并发送数据。在我的代码中,它将从用户那里获取名称并显示它,如何解析 ROR 中的数据。

这是我的 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 解析 ROR 中 的这些数据 如何为这些数据编写解析 json 文件,如何做到这一点

4

3 回答 3

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

查看/index.json.erb

[
  <% @hotels.each do |hotel| %>
    { 'id': <%= hotel.id %>, 'name': "<%= hotel.name %>" },
  <% end %>
]

路线.rb

get 'hotels' => 'hotels#index', :as => 'hotels'
于 2013-05-10T07:12:46.800 回答
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

于 2013-05-09T12:16:33.093 回答
1

有很多方法:

  1. to_json为每个模型创建方法
  2. 创建视图命名,即hotels/index.json.erb使用 ERb 模板引擎编写 JSON 代码

    [
      <% @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
    
于 2013-05-09T12:24:40.697 回答