Я визуализирую страницу из простой пользовательской модели (не 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-адресов все еще отсутствует функция.

0
SystematicFrank 12 Фев 2015 в 23:46

2 ответа

Лучший ответ

Было бы хорошо, если бы вы могли поделиться кодом из config/routes.rb или хотя бы результатом из rake routes.

Еще раз проверьте свои маршруты. Я думаю, вы могли определить маршрут как отдельный ресурс resource :person, который не будет добавлять идентификатор к URL-адресу.

1
ventsislaf 12 Фев 2015 в 21:48

Вам необходимо определить метод persisted?, который возвращает true: реализация по умолчанию всегда возвращает false, что заставляет рельсы генерировать путь без идентификатора.

2
Frederick Cheung 12 Фев 2015 в 21:46