我有一個嵌套的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',所以路由不存在於我的路由文件中;它在Model中指定)。 2)我沒有使用表單(我使用的是控制檯),並且設置控制器屬性'@ policy'和'@ client'對結果沒有影響。我正在使用'ActiveResource',只是在實例上調用'save'。有問題的策略實例已經知道它自己的':client_id'。 - 我誤解了你的回答? – JellicleCat