Rails генерирует неправильный путь для вложенных ресурсов с помощью Polymorphic_url и STI - PullRequest
0 голосов
/ 13 апреля 2019

У меня не такой традиционный код, и я изо всех сил пытаюсь сгенерировать правильный путь для ресурса.

В моих маршрутах.рб

namespace :admin do
  resources :matches do
    resources :lineups do
      resources :substitutions
    end
  end
end

Мои модели:

Match.rb

class Match < ApplicationRecord
  has_one :home_lineup
  has_one :away_lineup
end

На home_lineup.rb для структуры ИППП

class HomeLineup < Lineup

end

On away_lineup.rb для структуры ИППП

class AwayLineup < Lineup

end

lineup.rb

class Lineup < ApplicationRecord
  belongs_to :match
  #has a :type column as :string
end

и, substitution.rb

class Substitution < ApplicationRecord
  belongs_to :lineup
end

Когда я пытаюсь:

m = Match.last
l = m.home_lineup
s = Substitution.new
app.polymorphic_url([:admin, m, l, s])

Я получаю:

NoMethodError (undefined method `admin_match_away_lineup_substitutions_url' for #<ActionDispatch::Integration::Session:0x000055f4327a60d0>)
Did you mean?  admin_match_lineup_substitutions_url
               admin_match_lineup_substitution_url
               admin_match_lineup_substitution_path
               admin_match_lineup_substitutions_path

Но что я действительно хотел, так это "admin_match_lineup _...".

Что я должен сделать, чтобы решить эту проблему?

1 Ответ

0 голосов
/ 14 апреля 2019

Я нашел решение для моей проблемы в этом посте в блоге (http://leomayleomay.github.io/blog/2014/03/24/customize-the-polymorphic-url-for-sti/).

Чтобы заставить состав ответить на правильное имя, добавьте этот код в свой файл:

lineup.rb

def self.model_name
  ActiveModel::Name.new(self, nil, "Lineup")
end

Спасибо и счастливого кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...