diff --git a/app/components/sdg_management/relations/index_component.html.erb b/app/components/sdg_management/relations/index_component.html.erb
index cf3592dc9..7a9a1c5c0 100644
--- a/app/components/sdg_management/relations/index_component.html.erb
+++ b/app/components/sdg_management/relations/index_component.html.erb
@@ -6,6 +6,7 @@
<%= model_class.human_attribute_name(:title) %> |
<%= SDG::Goal.model_name.human(count: 2).upcase_first %> |
<%= SDG::Target.model_name.human(count: 2).upcase_first %> |
+ <%= t("admin.actions.actions") %> |
@@ -15,6 +16,14 @@
<%= record.title %> |
<%= record.sdg_goal_list %> |
<%= record.sdg_target_list %> |
+
+ <%= render Admin::TableActionsComponent.new(
+ record,
+ actions: [:edit],
+ edit_text: t("sdg_management.actions.edit"),
+ edit_path: edit_path_for(record)
+ ) %>
+ |
<% end %>
diff --git a/app/components/sdg_management/relations/index_component.rb b/app/components/sdg_management/relations/index_component.rb
index 0aaed38d0..8f561534b 100644
--- a/app/components/sdg_management/relations/index_component.rb
+++ b/app/components/sdg_management/relations/index_component.rb
@@ -16,4 +16,13 @@ class SDGManagement::Relations::IndexComponent < ApplicationComponent
def model_class
records.model
end
+
+ def edit_path_for(record)
+ {
+ controller: "sdg_management/relations",
+ action: :edit,
+ relatable_type: record.class.name.tableize,
+ id: record
+ }
+ end
end
diff --git a/app/controllers/sdg_management/relations_controller.rb b/app/controllers/sdg_management/relations_controller.rb
index f81ad8502..a0edec379 100644
--- a/app/controllers/sdg_management/relations_controller.rb
+++ b/app/controllers/sdg_management/relations_controller.rb
@@ -3,6 +3,10 @@ class SDGManagement::RelationsController < SDGManagement::BaseController
@records = relatable_class.accessible_by(current_ability).order(:id).page(params[:page])
end
+ def edit
+ @record = relatable_class.find(params[:id])
+ end
+
private
def relatable_class
diff --git a/app/views/sdg_management/relations/edit.html.erb b/app/views/sdg_management/relations/edit.html.erb
new file mode 100644
index 000000000..d916f0721
--- /dev/null
+++ b/app/views/sdg_management/relations/edit.html.erb
@@ -0,0 +1 @@
+<%= @record.title %>
diff --git a/config/locales/en/sdg_management.yml b/config/locales/en/sdg_management.yml
index c39a444b1..bacc84bbb 100644
--- a/config/locales/en/sdg_management.yml
+++ b/config/locales/en/sdg_management.yml
@@ -1,5 +1,7 @@
en:
sdg_management:
+ actions:
+ edit: "Manage goals and targets"
header:
title: "SDG content"
menu:
diff --git a/config/locales/es/sdg_management.yml b/config/locales/es/sdg_management.yml
index ce517cf25..23c10bd4a 100644
--- a/config/locales/es/sdg_management.yml
+++ b/config/locales/es/sdg_management.yml
@@ -1,5 +1,7 @@
es:
sdg_management:
+ actions:
+ edit: "Asignar objetivos y metas"
header:
title: "Contenido ODS"
menu:
diff --git a/config/routes/sdg_management.rb b/config/routes/sdg_management.rb
index 23a73d55d..5e8561784 100644
--- a/config/routes/sdg_management.rb
+++ b/config/routes/sdg_management.rb
@@ -9,8 +9,10 @@ namespace :sdg_management do
types_constraint = /#{types.join("|")}/
get "*relatable_type", to: "relations#index", as: "relations", relatable_type: types_constraint
+ get "*relatable_type/:id/edit", to: "relations#edit", as: "edit_relation", relatable_type: types_constraint
types.each do |type|
get type, to: "relations#index", as: type
+ get "#{type}/:id/edit", to: "relations#edit", as: "edit_#{type.singularize}"
end
end
diff --git a/spec/system/sdg_management/relations_spec.rb b/spec/system/sdg_management/relations_spec.rb
index 94e479394..f4a405f9f 100644
--- a/spec/system/sdg_management/relations_spec.rb
+++ b/spec/system/sdg_management/relations_spec.rb
@@ -70,5 +70,17 @@ describe "SDG Relations", :js do
expect(page).to have_content "6.1, 6.2"
end
end
+
+ scenario "shows link to edit a record" do
+ create(:budget_investment, title: "Build a hospital")
+
+ visit sdg_management_budget_investments_path
+
+ within("tr", text: "Build a hospital") do
+ click_link "Manage goals and targets"
+ end
+
+ expect(page).to have_css "h2", exact_text: "Build a hospital"
+ end
end
end