ror restful rails examples ruby-on-rails routing routes

ruby-on-rails - restful - routes ror



Rails Routes-Limitando los formatos disponibles para un recurso (6)

Tengo una serie de recursos que solo deseo que estén disponibles si se accede a través del formato JS. Los recursos de ruta de Rails me dan los formatos más el HTML estándar. ¿Hay alguna manera de especificar que solo se creen las rutas de formato JS?


Debes envolver esas rutas en un alcance. Desafortunadamente, las restricciones no funcionan como se esperaba en este caso.

Este es un ejemplo de tal bloque ...

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

Más información se puede encontrar aquí: https://github.com/rails/rails/issues/5548



Puede usar un before_filter que genera un error de enrutamiento a menos que el formato de solicitud sea MIME::JS .

app / controllers / 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

Aplique este filtro de forma más quirúrgica con :only :skip_before_filter :except , y :skip_before_filter como se :skip_before_filter en los rieles Guía del controlador de acción


Si necesita no solo uno u otro que no sea json (¿no puede usar #xhr? ), Le ofrezco la siguiente opción

resource :offers, only: :show, format: true, constraints: { format: ''pdf'' }

Espero eso ayude


Simplemente agregas restricciones sobre el formato:

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


qué tal si

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

no llega al controlador en absoluto. Tomado de railsadventures