意味悲鳴

PythonとかUnityとか.技術ブログでしたが,研究ブログにシフトしました.

Redmineプラグイン開発のルートの作成について

【2014/08/21 追記】
Redmineのバージョンは2.3.4


こんにちは。今日も今日とてインターンの下準備です。

ようやく自分でRedmineプラグイン開発をしはじめたのですが、
単純にプラグインのひな形を作っただけではアクセス出来ないし、
メニューに追加して表示できないことに気づきました。




GuideForProject - r-labs


要するにURLを設定するためにroute.rbというファイルを作成しないといけないらしいです。

で、ここで詰まってたんですが、これってプラグインごとにいろいろ考えないといけないんですよ。


先述したリンクのページで作成しているプラグインは、プロジェクトのメニューに追加する形で
使用するプラグインであるため、URLは以下のようになります。

http://127.0.0.1:3000/projects/project_name/foos

プロジェクトのメニューに追加しているのでinit.rbには、

menu :project_menu, :standard, { :controller => 'foos', :action => 'index'}, :param => :project_id

こんな一文があるはずです。この部分の一番最初の引数が肝心な所。
この引数が何なのかによってconfig/route.rbの中身も書き換える必要があります。

引数が :project_menu だった場合、先述したようなURLになるため、
route.rbは次のようになります。

Rails.application.routes.draw do
  resources :projects do
    resources :foos
  end
end

projectsの後にコントローラーの名前であるfoosが入っています。



ほかの引数である :application_menu, :top_menu, :account_menuであった場合は、
URLが次のようになるはずです。

http://127.0.0.1:3000/foos


というわけで、route.rbは……

Rails.application.routes.draw do
    resources :foos
end


こう書けばOK。

あとはコマンド打ってあげればルートを生成してくれました。

$ rake routes


これで500が出ないでホームにも追加したメニューが表示されるはずです。