habe ich FullcalendarEngine in meinem routes.rb montiert:Wie bekomme ich URL_für die Arbeit mit einem Modul?
mount FullcalendarEngine::Engine , at: "/fullcalendar_engine"
Leider, obwohl ich dies in routes.rb haben:
resources :events, module: 'fullcalendar_engine'
und die erzeugten Routen:
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
Ich kann immer noch nicht url_for
damit verwenden (was ich tun muss, damit es mit will_paginate
funktioniert):
Fehler:
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"}
Wenn ich die Routen des Moduls prüfen:
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"}]
Hinweis hat dies:
@defaults={:controller=>"fullcalendar_engine/events", :action=>"index"}
Beachten Sie den Namespace für den Controller-Wert. Dies funktioniert nicht:
FullcalendarEngine::Engine.routes.url_for({:controller=>"events", :action=>"index"})
ActionController::UrlGenerationError: No route matches {:action=>"index", :controller=>"events"}
Aber wenn ich versuche, es zu Namensraum, gibt es diesen Fehler:
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
Auch das Hinzufügen eines Hosts erzeugt die falsche url:
FullcalendarEngine::Engine.routes.url_for({:controller=>"fullcalendar_engine/events", :action=>"index", host: "localhost"})
=> "http://localhost/fullcalendar_engine/"
Wie kann Ich bekomme url_for
, um die Route zu erkennen?
Eigentlich habe ich ursprünglich nicht alle Routen gebucht. Es gibt tatsächlich eine Indexroute. Ich habe die Frage aktualisiert. – Donato