首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未定义的方法错误draper gem

未定义的方法错误draper gem
EN

Stack Overflow用户
提问于 2014-01-29 04:59:09
回答 2查看 1.2K关注 0票数 0

我正在尝试使用draper gem,看起来我设置得很好,然而,当我在draper方法中调用方法时,我得到了一个“未定义的方法错误”,这是我到目前为止所做的事情。

代码语言:javascript
复制
gem 'draper'

bundle install

rails g decorator MyModel

在我的装饰器中,我有以下代码。

代码语言:javascript
复制
class TaskDecorator < Draper::Decorator
  delegate_all
  decorates :task

  def dummy

    print "Hello World"

  end
end

在我的控制器中

代码语言:javascript
复制
  # GET /tasks/1
  # GET /tasks/1.json
  def show
    @task = TaskDecorator.find_by(:id => params[:id])
  end

我的观点

代码语言:javascript
复制
<%= @task.dummy %>

在浏览器中运行,我得到以下错误

代码语言:javascript
复制
undefined method `dummy' for #<Task:0x007fad7a639d48>

你知道是怎么回事吗?

EN

回答 2

Stack Overflow用户

发布于 2014-04-07 17:48:21

我解决了这个问题,通过替换你的:

TaskDecorator.find_by(:id => params[:id])

通过以下方式:

Task.find(params[:id]).decorate

(编辑:没有足够的声誉来评论最初的问题,所以最初的答案是询问OP是否找到了解决方案。现在编辑以包含我找到的解决方案。诚然,这是一个老帖子,但留下这篇文章,以防其他人遇到同样的问题。)

票数 0
EN

Stack Overflow用户

发布于 2014-11-16 01:43:45

您也可以像这样在TaskDecorator中调用decorates_finders

代码语言:javascript
复制
class TaskDecorator < Draper::Decorator
  delegate_all
  decorates :task
  decorates_finders

  def dummy

    print "Hello World"

  end
end

然后,您可以通过调用

代码语言:javascript
复制
Task.find(params[:id])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21416690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档