【问题标题】:Error with ActiveResource and Rails formActiveResource 和 Rails 表单出错
【发布时间】:2013-09-19 21:55:58
【问题描述】:

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

在我的控制器中 (sn-p)

def new
  @database = Database.new
end

def edit
  @database = Database.find(params[:id])
  if !@database
    redirect_to databases_path
  end
end 

在我的表单视图(sn-p)上:

<%= form_for @database do |d| %>

  <%= d.label :dbname %> <!-- error reported on this line -->
  <%= @database.dbname %>

  <%= d.label :description %>
  <%= @database.description %>

<% end %>

【问题讨论】:

  • 如果有人遇到这个问题,请将activeresource-response升级到1.0.1

标签: ruby-on-rails ruby activeresource


【解决方案1】:

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

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

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

【讨论】:

  • 如果您提供失败的测试示例,那就太好了。
  • 与@fivell 合作解决了activeresource-response gem 中的这个问题。感谢您的快速反馈。
猜你喜欢
  • 2010-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-06
相关资源
最近更新 更多