diff --git a/app/controllers/budgets/investments_controller.rb b/app/controllers/budgets/investments_controller.rb index 902eaf50f..c48ce7fc4 100644 --- a/app/controllers/budgets/investments_controller.rb +++ b/app/controllers/budgets/investments_controller.rb @@ -4,10 +4,11 @@ module Budgets include CommentableActions include FlagActions - before_action :authenticate_user!, except: [:index, :show] + before_action :authenticate_user!, except: [:index, :show, :json_data] - load_and_authorize_resource :budget - load_and_authorize_resource :investment, through: :budget, class: "Budget::Investment" + load_and_authorize_resource :budget, except: :json_data + load_and_authorize_resource :investment, through: :budget, class: "Budget::Investment", + except: :json_data before_action -> { flash.now[:notice] = flash[:notice].html_safe if flash[:html_safe] && flash[:notice] } before_action :load_ballot, only: [:index, :show] @@ -16,6 +17,8 @@ module Budgets before_action :load_categories, only: [:index, :new, :create] before_action :set_default_budget_filter, only: :index + skip_authorization_check only: :json_data + feature_flag :budgets has_orders %w{most_voted newest oldest}, only: :show @@ -79,6 +82,19 @@ module Budgets super end + def json_data + investment = Budget::Investment.find(params[:id]) + data = { + investment_id: investment.id, + investment_title: investment.title, + budget_id: investment.budget.id + }.to_json + + respond_to do |format| + format.json { render json: data } + end + end + private def resource_model diff --git a/config/routes/budget.rb b/config/routes/budget.rb index 3a06f3c7c..e3a0acc16 100644 --- a/config/routes/budget.rb +++ b/config/routes/budget.rb @@ -17,3 +17,5 @@ scope '/participatory_budget' do post :vote, on: :member end end + +get 'investments/:id/json_data', to: :json_data, controller: 'budgets/investments'