Определенно согласен с rjk, вы должны поместить его в контроллер приложения, потому что если вы этого не сделаете, ваши контроллеры не смогут получить доступ к методу.Кажется, что проблема, которую вы получаете, связана с нулевым идентификатором (например, params [: project_id] не пропускается в каждом запросе), вероятно, он передается только в действии навигации, которое переключается между проектами?
IЯ не уверен, что делают внутренности простой навигации, но если params[:project_id]
передается только в навигационном действии, то навигационное действие должно сохранять это в сеансе session[:project_id] = params[:project_id].to_i
, тогда вы бы определили метод приватного контроллера + хелперследующим образом, используя идентификатор сеанса, чтобы вы могли получить к нему доступ в других действиях:
class ApplicationController < ActionController::Base
helper_method :current_project
private
def current_project
@current_project ||= Project.find(session[:project_id])
end
end