【问题标题】:Add JSON support to Rails app向 Rails 应用程序添加 JSON 支持
【发布时间】:2010-05-28 01:25:51
【问题描述】:

我正在试验 Rails,想知道需要什么来允许/添加对 JSON 请求的支持?

我有一个普通的 Rails 2.3.5 安装,默认脚手架似乎支持 HTMLXML 请求,但不支持 JSON

class EventsController < ApplicationController
  # GET /events
  # GET /events.xml
  def index
    @events = Event.all

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @events }
    end
  end

  # GET /events/1
  # GET /events/1.xml
  def show
    @event = Event.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @event }
    end
  end

...

我是新手,但看起来好像我需要在每个方法中添加一个格式行:

format.js  { render :js => @event.json }

这不能自动完成吗?也许我需要更新某个模板……或者我可以设置一个标志?或者也许,而且很可能,我完全错过了这条船?!?

【问题讨论】:

    标签: ruby-on-rails json ruby-on-rails-plugins


    【解决方案1】:

    你这样做:

    format.json {render :json=>@event}
    

    这将为模型呈现默认的活动记录 JSON

    易用性的选项是您可以编写一个私有方法,该方法接受格式对象和要渲染的对象,然后根据格式渲染不同的东西。示例:

    class MyController<ApplicationController
      def show
        @event=Event.find(params[:id])
        respond_to do {|format| myRenderer(format,@event)}
     end
      ...
      private
      def myRenderer(fmt,obj)
        fmt.json {render :json=>obj}
        fmt.html
        fmt.xml {render :xml=>obj}
     end
    

    【讨论】:

    • 就这样吗?只需添加该行,然后... presto!?!有没有办法让框架在创建脚手架时在每个 respond_to 块中包含 .json 行? 仍在消化您关于自定义 myRenderer 的评论的第二部分...
    • 您可以将其添加到默认的脚手架生成器模板中。我回答的第二部分只是一个易于使用的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 2017-05-12
    • 2010-11-07
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    相关资源
    最近更新 更多