У меня есть вложенная модель ActiveResource (т. Е. Она находится в пространстве имен другой модели). Попытка вызвать save
поднимает:Как указать параметры префикса при сохранении вложенного ActiveResource?
ActiveResource::MissingPrefixParam: client_id prefix_option is missing
Как поставить нужный префикс?
Вот мой класс:
class Foo::Bar < ActiveResource::Base
self.site = "http://www.example.com"
self.prefix = "/clients/:client_id"
self.element_name = "policy"
self.collection_name = "policies"
end
Вот моя сохранить попытка:
bar = Foo::Bar.new :client_id => 123
bar.valid? # => true
bar.client_id # => 123
bar.save # => ActiveResource::MissingPrefixParam...
Снова и снова я искал разъяснения по этому вопросу, но я только найти ту же инструкцию:
When a GET is requested for a nested resource and you don’t provide the prefix_param an ActiveResource::MissingPrefixParam will be raised.
Я пытаюсь получить доступ к конечной точке API нашего сервера в http://www.example.com/clients/[client_id]/policies
, но я, видимо, не в состоянии поставить client_id
, так что мое приложение делает свой запрос на http://www.example.com/clients//policies
Журнал сервер говорит мне: ActionController::RoutingError (No route matches "/clients//policies/" with {:method=>:post})
.
Спасибо, но это не сработает. (Я не вижу, как это будет работать, но я все равно попробовал). 1) Нет 'client_policies_path' (я использую' ActiveResource', а не 'ActiveRecord', поэтому маршрут не существует в файле маршрутов, он указан в модели). 2) Я не использую форму (я использую консоль), а атрибуты контроллера '@ policy' и' @ client' не влияют на результат. Я использую 'ActiveResource' и просто вызываю' save' в экземпляре. Этот пример политики уже знает свой собственный ': client_id'. - Я не понимаю ваш ответ? – JellicleCat