Плагин Redmine. Добавить действие в ProjectsController

Я создаю плагин для redmine. Мне нужно добавить действие в контроллер проектов. Сделал патч для ProjectsControllers

  module ProjectsControllerPatch
  def self.included(base) # :nodoc:
    base.extend(ClassMethods)
    base.send(:include, InstanceMethods)
  end
  module ClassMethods
  end
  module InstanceMethod
     def new_method
     end
  end
end

# Add module to Issue
ProjectsController.send(:include, ProjectsControllerPatch)

И добавил маршрут в route.rb:

get 'new_method', :to => 'projets#new_method'

Но у меня ошибка 404 на этом маршруте


person MaxKonin    schedule 08.08.2013    source источник


Ответы (1)


Вам нужно определить маршрут следующим образом:

RedmineApp::Application.routes.draw do
  match 'issue/:issue_id/something/:action/:id', to: 'something#new_some', as: 'fancy_route'
end

После этого зарегистрируйте этот маршрут в своем плагине:

project_module :my_plugin do
  permission :my_plugin, { :my_plugin => [:fancy_route] },:public => true
end

Живой пример из плагина iCalendar:

project_module :redmine_icalendar do
  permission :redmine_icalendar, {:redmine_icalendar => [:index, :show, :list]}, :public => true
  permission :redmine_icalendar, {:redmine_icalendar => [:edit, :new, :destroy]}, :require => :member    
end
person Noma4i    schedule 09.08.2013
comment
Мне это не помогло. Возможно, Может быть, я неправильно понял, как прописать разрешение. - person MaxKonin; 12.08.2013
comment
Является ли :my_plugin именем моего плагина? И что это значит { :my_plugin =› [:my_plugin] } - person MaxKonin; 12.08.2013
comment
Извините, дерьмовый пример. Это более понятно: { :my_plugin =› [:index, :show] } Я отредактировал свой ответ с правильным кодом и живым примером из плагина iCalendar. - person Noma4i; 12.08.2013
comment
Мне тоже не помогло. Не могли бы вы дать мне ссылку на плагин iCalendar src - person MaxKonin; 12.08.2013
comment
это какой-то внутренний плагин) Для обучения я использовал этот плагин redminebacklogs.net, он довольно сложный и имеет все примеры я хотел - person Noma4i; 14.08.2013