diff --git a/app/controllers/federal_subjects_controller.rb b/app/controllers/federal_subjects_controller.rb index 53166c1..792b9ad 100644 --- a/app/controllers/federal_subjects_controller.rb +++ b/app/controllers/federal_subjects_controller.rb @@ -9,7 +9,7 @@ class FederalSubjectsController < ApplicationController @federal_subjects = policy_scope(FederalSubject).order_by_display_name end - # GET /federal_subjects/:id + # GET /federal_subjects/:number def show authorize @federal_subject end @@ -17,6 +17,6 @@ class FederalSubjectsController < ApplicationController private def set_federal_subject - @federal_subject = FederalSubject.find params[:id] + @federal_subject = FederalSubject.find_by! number: params[:number] end end diff --git a/app/models/federal_subject.rb b/app/models/federal_subject.rb index be6019e..799bdd4 100644 --- a/app/models/federal_subject.rb +++ b/app/models/federal_subject.rb @@ -54,6 +54,10 @@ class FederalSubject < ApplicationRecord # Methods # ########### + def to_param + number&.to_s + end + def display_name if I18n.locale == :ru native_name diff --git a/app/views/federal_subjects/index.html.erb b/app/views/federal_subjects/index.html.erb index 33b392c..ddfd970 100644 --- a/app/views/federal_subjects/index.html.erb +++ b/app/views/federal_subjects/index.html.erb @@ -2,9 +2,6 @@ - @@ -24,7 +21,6 @@ <% @federal_subjects.each do |federal_subject| %> - diff --git a/app/views/federal_subjects/show.html.erb b/app/views/federal_subjects/show.html.erb index c1abcd6..d43e9ce 100644 --- a/app/views/federal_subjects/show.html.erb +++ b/app/views/federal_subjects/show.html.erb @@ -8,9 +8,6 @@

-
<%= FederalSubject.human_attribute_name :id %>
-
<%= @federal_subject.id %>
-
<%= FederalSubject.human_attribute_name :number %>
<%= @federal_subject.number %>
diff --git a/config/routes.rb b/config/routes.rb index 389aa5a..c74a8a5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -11,7 +11,7 @@ Rails.application.routes.draw do resources :accounts, param: :nickname, only: :show - resources :federal_subjects, only: %i[index show] + resources :federal_subjects, param: :number, only: %i[index show] ############### # User routes # diff --git a/spec/models/federal_subject_spec.rb b/spec/models/federal_subject_spec.rb index 89a037c..f114dcc 100644 --- a/spec/models/federal_subject_spec.rb +++ b/spec/models/federal_subject_spec.rb @@ -15,6 +15,16 @@ RSpec.describe FederalSubject do it { is_expected.not_to validate_presence_of :regional_office } end + describe '#to_param' do + specify do + expect(subject.to_param).to be_instance_of String + end + + specify do + expect(subject.to_param).to eq subject.number.to_s + end + end + describe '#english_name' do def allow_value(*) super.for :english_name diff --git a/spec/requests/federal_subjects/show_spec.rb b/spec/requests/federal_subjects/show_spec.rb index ce73381..99087f3 100644 --- a/spec/requests/federal_subjects/show_spec.rb +++ b/spec/requests/federal_subjects/show_spec.rb @@ -2,13 +2,13 @@ require 'rails_helper' -RSpec.describe 'GET /federal_subjects/:id' do +RSpec.describe 'GET /federal_subjects/:number' do let(:federal_subject) { create :federal_subject } before do sign_in current_account.user if current_account&.user - get "/federal_subjects/#{federal_subject.id}" + get "/federal_subjects/#{federal_subject.number}" end for_account_types nil, :guest, :usual, :superuser do
- <%= FederalSubject.human_attribute_name :id %> - <%= FederalSubject.human_attribute_name :number %>
<%= federal_subject.id %> <%= federal_subject.number %> <%= federal_subject.display_name %> <%= federal_subject.centre %>