ActiveResource和Rails表单出错

时间:2013-09-19 21:55:58

标签: ruby-on-rails ruby activeresource

我正在使用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 %>

1 个答案:

答案 0 :(得分:1)

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

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

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