rails中'respond_to'的用例是什么?

Moh*_*ain 16 ruby-on-rails

respond_to do |format|
  format.html
  format.xml  { render :xml => @mah_blogz }
end

respond_to do |format|
      format.js
end
Run Code Online (Sandbox Code Playgroud)

这是什么respond_to,format.html,format.xmlformat.js?他们的目的是什么,他们如何运作?

Ana*_*hah 9

这是文档的链接

http://api.rubyonrails.org/classes/ActionController/MimeResponds/ClassMethods.html#method-i-respond_to

它是一种基于客户要求响应客户端的方式,如果客户端要求HTML,Rails会将HTML发送回客户端,如果他们要求XML然后是XML.


Dev*_*oop 8

说你这样做:

    class UsersController < ApplicationController

      def create
        #
        #your code
        #

        respond_to do |format|
          format.xml {render :xml => xxx}
          format.json {render :json => xxx}
          format.html {render xxx}
        end
      end

      def edit
        #
        #your code
        #

        respond_to do |format|
          format.xml {render :xml => xxx}
          format.json {render :json => xxx}
          format.html {render xxx}
        end
      end

    end
Run Code Online (Sandbox Code Playgroud)

而是做:

    class UsersController < ApplicationController

      respond_to :xml, :json, :html

      def create
        #
        #your code
        #

        respond_with xxx

      end

      def edit
        #
        #your code
        #

        respond_with xxx

      end

    end
Run Code Online (Sandbox Code Playgroud)

这就是你如何保持代码DRY(不要重复自己)

  • @gwho:您可以使用`:only`参数将`respond_to`调用限制为仅需要的操作.例如:`respond_to:json,:xml,only:[:new,:create]`有效. - 或者 - 如果你不想使用`:only`,那么就不要写response_with.使用`render` (2认同)