복붙노트

[RUBY-ON-RAILS] 경로 레일 - 자원에 사용 가능한 형식을 제한

RUBY-ON-RAILS

경로 레일 - 자원에 사용 가능한 형식을 제한

나는 JS 형식을 통해 액세스하는 경우 I에만 사용할 원하는 자원의 시리즈가있다. 레일 '경로의 자원은 나에게 형식 플러스 표준 HTML을 제공합니다. 단지 JS 형식 경로가 생성되도록 지정할 수있는 방법이 있습니까?

해결법

  1. ==============================

    1.당신은 단지 형식에 대한 제약 조건을 추가합니다 :

    당신은 단지 형식에 대한 제약 조건을 추가합니다 :

    resources :photos, :constraints => {:format => /(js|json)/}
    
  2. ==============================

    2.당신은 범위에 그 경로를 포장해야합니다. 이 경우 예상대로 제약은 불행히도 작동하지 않습니다.

    당신은 범위에 그 경로를 포장해야합니다. 이 경우 예상대로 제약은 불행히도 작동하지 않습니다.

    이는 이러한 블록의 일례이다 ..

    scope :format => true, :constraints => { :format => 'json' } do
      get '/bar' => "bar#index_with_json"
    end
    

    자세한 내용은 여기에서 찾을 수 있습니다 : https://github.com/rails/rails/issues/5548

  3. ==============================

    3.위의 방법 중 어느 것도 나를 위해 일하지 않는다. 나는이 솔루션과 함께가는 결국 :

    위의 방법 중 어느 것도 나를 위해 일하지 않는다. 나는이 솔루션과 함께가는 결국 :

    post "/test/suggestions", to: "test#suggestions", :constraints => -> (req) { req.xhr? }
    

    https://railsadventures.wordpress.com/2012/10/07/routing-only-ajax-requests-in-ror/#comment-375에서 발견

  4. ==============================

    4.방법에 대한

    방법에 대한

    # routes.rb
    
    class OnlyAjaxRequest
      def matches?(request)
        request.xhr?
      end
    end
    
    post "/test/suggestions", to: "test#suggestions", :constraints => OnlyAjaxRequest.new
    

    그것은 모두에서 컨트롤러로하지 않습니다. railsadventures에서 촬영

  5. ==============================

    5.당신은 단지 하나 또는 JSON 이외의 필요가있는 경우 (#xhr 사용할 수 없습니다?) 나는 아래 옵션으로 제공

    당신은 단지 하나 또는 JSON 이외의 필요가있는 경우 (#xhr 사용할 수 없습니다?) 나는 아래 옵션으로 제공

    자원 : 이벤트 만 : 쇼 형식 : 사실, 제약 : {형식 : 'PDF'}

    희망이 도움이

  6. ==============================

    6.당신은 요구 포맷하지 않는 한 라우팅 오류를 발생시키는 before_filter를 사용하여 MIME :: JS이다.

    당신은 요구 포맷하지 않는 한 라우팅 오류를 발생시키는 before_filter를 사용하여 MIME :: JS이다.

    응용 프로그램 / 컨트롤러 / application_controller.rb :

    class ApplicationController < ActionController::Base
      before_filter :check_js
    
      private
        def check_js
          raise RoutingError.new('expected application/json') unless request.format == MIME::JS
        end
    end
    

    더 많은 수술이 필터를 적용 : 만 : 제외시켰다과 : skip_before_filter을 덮여으로 액션 컨트롤러 가이드 레일

  7. from https://stackoverflow.com/questions/3679200/rails-routes-limiting-the-available-formats-for-a-resource by cc-by-sa and MIT license