Bonjour,
Je suis en train de créer un plugin REDMINE qui utilise Rails.
Je cherche à rajouter un onglet supplémentaire sur une page existante mais il y a un fonctionnement vraiment bizarre de Rails que je n'explique pas qui m'empêche de faire ce que je veux.
La ressource est "time_entries" qui est accessible dans un projet ou directement à la racine du site, voiçi la table de routage de base de REDMINE sur cette ressource :
resources :projects
resources :time_entries, :controller => 'timelog', :except => [:show, :edit, :update, :destroy] do
get 'report', :on => :collection
end
end
resources :time_entries, :controller => 'timelog', :except => :destroy do
member do
# Used when updating the edit form of an existing time entry
patch 'edit', :to => 'timelog#edit'
end
collection do
get 'report'
get 'bulk_edit'
post 'bulk_update'
end
end
Du coup j'ai fait le même principe que pour leur page "report" j'ai, dans mon plugin, créé ma page routes.rb
resources :projects do
resources :time_entries, :controller => 'timelog', :except => [:show, :edit, :update, :destroy] do
get 'charts', :on => :collection
end
end
resources :time_entries, :controller => 'timelog', :except => :destroy do
get 'charts', :on => :collection
end
Dans le cadre d'un projet (typ. /projects/nom-du-projet/times_entries/charts) la table de routage fonctionne mais bizarrement sur la page du site (typ. /times_entries/charts) ça ne fonctionne pas.
A fonrce de trituré j'ai fini par ajouter directement mon "get 'charts', :on => :collectio"n dans le fichier routes.rb de REDMINE et la miracle ça passe. Même en effaçant toute la ressource de la table de routage de redmine et en la plaçant dans mon plugins avec ma nouvelle entrée "charts" ça fonctionne. J'ai l'impression que rails ne veut pas ajouter de nouvelles entrées à cette ressource après coup. Mais pourquoi dans ce cas ça fonctionne pour l'autre ?
bref je suis en quête d'idée et d'explication.
Merci d'avance pour toute information utile sur le sujet.