1

我正在使用 ActiveResource 4.0 将 RESTFull API 映射到我的 Rails 4 应用程序中的模型类。仅在尝试编辑对象时,我才收到错误“SimpleDelegator:Class 的未定义方法'model_name'” 。

似乎由 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 %>
4

1 回答 1

1

好的,我发现了问题。我还使用activeresource-response gem 来获取与 HTTP 标头一起发送的分页参数。

可以在这里看到这个 gem 使用 SimpleDelegator 来包装 find 方法执行后的响应,以“捕获”完整的 ActiveResource 连接的 htt_response。

我会尝试在 gem 中解决这个问题或使用其他解决方案,但我认为这个答案可以帮助其他人。

于 2013-09-20T14:38:23.530 回答