我正在使用ActiveResource 4.0将RESTFull API映射到我的Rails 4应用程序中的模型类。我只是在尝试编辑对象时收到错误“未定义的方法'model_name'对于SimpleDelegator:Class”。
似乎由ActiveResource的后代加载的对象被创建为SimpleDelegator的后代 - 而不能响应model_name方法。
我对ActiveResource代码做了一些阅读,但我无法理解为什么会这样。有没有人偶然发现过这样的事情?
我的模特:
class Database < ActiveResource::Base
self.size = "api.endpoint"
end
在我的控制器(摘录)中
def new
@database = Database.new
end
def edit
@database = Database.find(params[:id])
if !@database
redirect_to databases_path
end
end
在我的表单视图(摘录)上:
<%= form_for @database do |d| %>
<%= d.label :dbname %> <!-- error reported on this line -->
<%= @database.dbname %>
<%= d.label :description %>
<%= @database.description %>
<% end %>
答案 0 :(得分:1)
好的,我发现了问题。我还使用 activeresource-response gem来获取使用HTTP标头发送的分页参数。
可以看出here这个gem使用SimpleDelegator在find方法执行后包装响应,以“捕获”完整的ActiveResource连接的htt_response。
我会尝试在gem中修复此问题或使用其他解决方案,但我认为这个答案可以帮助其他人。