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.

Aucune réponse