Я визуализирую страницу из простой пользовательской модели (не ActiveRecord, простой ActiveModel), и я не могу заставить помощники URL / пути генерировать URL-адрес с их идентификатором, например:
person_path(model)
# I want: /person/3
# I get: /person
Есть ли какой-то конкретный класс, который я должен унаследовать или реализовать, чтобы помощники URL работали с моей пользовательской моделью?
Я слышал о to_param
, но он не работает, по крайней мере, не с этим:
class Person
include ActiveModel::Model
def id
3
end
def to_param
id.to_s
end
end
Согласно документации, которая должна работать:
Любой класс, который включает ActiveModel :: Model, может использоваться с form_for, render и любыми другими вспомогательными методами Action View, как и объекты Active Record.
Но я думаю, что для работы помощников URL-адресов все еще отсутствует функция.
2 ответа
Было бы хорошо, если бы вы могли поделиться кодом из config/routes.rb
или хотя бы результатом из rake routes
.
Еще раз проверьте свои маршруты. Я думаю, вы могли определить маршрут как отдельный ресурс resource :person
, который не будет добавлять идентификатор к URL-адресу.
Вам необходимо определить метод persisted?
, который возвращает true
: реализация по умолчанию всегда возвращает false, что заставляет рельсы генерировать путь без идентификатора.
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.