я установил FullcalendarEngine в моем routes.rb:Как получить url_for работы с модулем?
mount FullcalendarEngine::Engine , at: "/fullcalendar_engine"
К сожалению, даже если у меня есть это в routes.rb:
resources :events, module: 'fullcalendar_engine'
И сгенерированные маршруты:
fullcalendar_engine_path /fullcalendar_engine FullcalendarEngine::Engine
events_path GET /events/index(.:format) fullcalendar_engine/events#index
event_path GET /events/:id(.:format) fullcalendar_engine/events#show
events_path GET /events(.:format) fullcalendar_engine/events#index
POST /events(.:format) fullcalendar_engine/events#create
new_event_path GET /events/new(.:format) fullcalendar_engine/events#new
edit_event_path GET /events/:id/edit(.:format) fullcalendar_engine/events#edit
event_path GET /events/:id(.:format) fullcalendar_engine/events#show
PATCH /events/:id(.:format) fullcalendar_engine/events#update
PUT /events/:id(.:format) fullcalendar_engine/events#update
DELETE /events/:id(.:format) fullcalendar_engine/events#destroy
Я все еще не могу использовать url_for
с ним (что мне нужно сделать, чтобы заставить его работать с will_paginate
):
Ошибка:
RailsDevise::Application.routes.url_for({ controller: 'events', action: 'index'}) => ActionController::UrlGenerationError: No route matches {:action=>"index", :controller=>"events"} FullcalendarEngine::Engine.routes.url_for({ controller: 'events', action: 'index'}) => ActionController::UrlGenerationError: No route matches {:action=>"index", :controller=>"events"}
Когда я проверить маршруты модуля,:
FullcalendarEngine::Engine.routes.routes.collect {|journey| journey.defaults }
=> [{:controller=>"fullcalendar_engine/events", :action=>"index"}, {:action=>"get_events", :controller=>"fullcalendar_engine/events"}, {:action=>"move", :controller=>"fullcalendar_engine/events"}, {:action=>"resize", :controller=>"fullcalendar_engine/events"}, {:action=>"index", :controller=>"fullcalendar_engine/events"}, {:action=>"create", :controller=>"fullcalendar_engine/events"}, {:action=>"new", :controller=>"fullcalendar_engine/events"}, {:action=>"edit", :controller=>"fullcalendar_engine/events"}, {:action=>"show", :controller=>"fullcalendar_engine/events"}, {:action=>"update", :controller=>"fullcalendar_engine/events"}, {:action=>"update", :controller=>"fullcalendar_engine/events"}, {:action=>"destroy", :controller=>"fullcalendar_engine/events"}]
Уведомление он имеет следующее:
@defaults={:controller=>"fullcalendar_engine/events", :action=>"index"}
Обратите внимание на пространство имен для значения контроллера. Это не работает:
FullcalendarEngine::Engine.routes.url_for({:controller=>"events", :action=>"index"})
ActionController::UrlGenerationError: No route matches {:action=>"index", :controller=>"events"}
Но если я пытаюсь пространство имен, он дает эту ошибку:
FullcalendarEngine::Engine.routes.url_for({:controller=>"fullcalendar_engine/events", :action=>"index"})
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
Даже добавление узла создает неправильный URL:
FullcalendarEngine::Engine.routes.url_for({:controller=>"fullcalendar_engine/events", :action=>"index", host: "localhost"})
=> "http://localhost/fullcalendar_engine/"
Как может Я получаю url_for
, чтобы узнать маршрут?
На самом деле я изначально не опубликовал все маршруты. Существует действительно индексный маршрут. Я обновил вопрос. – Donato