У меня есть ряд ресурсов, которые я хочу получить только при доступе через JS-формат. Ресурсы маршрутов Rails дают мне форматы плюс стандартный HTML. Есть ли способ указать, что будут созданы только маршруты формата JS?Маршруты Rails - ограничение доступных форматов для ресурса
ответ
Вы просто добавить ограничения о формате:
resources :photos, :constraints => {:format => /(js|json)/}
Если я не делаю что-то неправильно, это все еще позволяет мне получить доступ к фотографиям как: html. Я получаю сообщение о недостающем шаблоне, когда я ожидаю исключение исключаемого маршрута. Мысли? –
Не должно быть '/ (js | json) /'? – Garrett
Да, я поймал это и изменил его. Все еще не работает для меня. У меня есть ресурсы: members,: controller => 'homes/members',: constraints => {: format =>/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
Примените этот фильтр более хирургически с :only
, :except
и :skip_before_filter
, как покрыты в рельсах Action Controller Guide
I ' ve использовал аналогичный подход для решения этой проблемы https://github.com/marcusg/force_format – marcus3006
Вы должны обернуть эти маршруты в области. К сожалению, ограничения в этом случае не работают должным образом.
Это пример такого блока ...
scope :format => true, :constraints => { :format => 'json' } do
get '/bar' => "bar#index_with_json"
end
Более подробную информацию можно найти здесь: https://github.com/rails/rails/issues/5548
Это должно быть отмечено как ответ. –
Если вы используете 'resources', вам не нужен блок видимости, просто добавьте' 'format => true' и': constraints => ... 'непосредственно к вызову' resources'. – Nathan
Это работало в моем случае для ресурсоемкого маршрута.'resources: photos, format: true, constraints: 'json'' – maicher
как о
# routes.rb
class OnlyAjaxRequest
def matches?(request)
request.xhr?
end
end
post "/test/suggestions", to: "test#suggestions", :constraints => OnlyAjaxRequest.new
не добраться до контроллер вообще. Получено с railsadventures
Ни один из вышеперечисленных решений не работал для меня. Я в конечном итоге происходит с этим решением:
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
Если вам нужно не только тот или иной, чем json
(использование косяка #xhr?
) Я предлагаю вам вариант ниже
resource :offers, only: :show, format: true, constraints: { format: 'pdf' }
Надеюсь, это поможет
- 1. Rails 4 - маршруты для вложенного ресурса
- 2. Ограничение ресурса ресурса JUnit
- 3. Маршруты Rails и ограничение аутентификации по ассоциации
- 4. Различные маршруты для одного и того же ресурса в Rails
- 5. Получить список доступных форматов аудиофайлов Windows
- 6. Эмбер Маршруты и маршруты Rails
- 7. Ограничение количества ядер, доступных для приложения Akka
- 8. Маршруты Rails с ограничениями
- 9. Как создать динамические маршруты ресурса?
- 10. Ограничить все остаточные маршруты без повторения для каждого объявления ресурса
- 11. Rails 5 переименовать имя ресурса ресурса
- 12. Rails: CanCanCan для ограничения количества создания ресурса
- 13. Маршруты Rails и параметры контроллера
- 14. Rails Уплотненный маршрут для сингулярного ресурса
- 15. Ограничение каких форматов Загрузка изображений PIL
- 16. Rails: несколько имен для ресурса
- 17. Rails частичный для вложенного ресурса
- 18. Как вы истекаете действие для всех форматов в Rails? (Expire_action)
- 19. валидация Несколько форматов в Rails
- 20. SQL Reporting Services - Ограничение форматов экспорта
- 21. Превышено ограничение ресурса MariaDB/MySQL
- 22. Как обнаружить, нет доступных форматов в видео HTML5?
- 23. Ruby on Rails маршруты пространства имен
- 24. Rails: Как изменить тесты для вложенного ресурса?
- 25. Как добавить пользовательские маршруты в маршрут ресурса
- 26. Рекурсивные маршруты в Rails
- 27. Rails условные маршруты
- 28. Rails Находчивые маршруты
- 29. Rails «Показать» маршруты
- 30. Rails маршруты /new(.:format)
Какую версию Rails вы используете? – Garrett
Можете ли вы принять мой ответ ниже, его правильный, текущий выбранный ответ неверен и запутывает сообщество. – koonse