0

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

gem 'draper'

bundle install

rails g decorator MyModel

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

class TaskDecorator < Draper::Decorator
  delegate_all
  decorates :task

  def dummy

    print "Hello World"

  end
end

在我的控制器中

  # GET /tasks/1
  # GET /tasks/1.json
  def show
    @task = TaskDecorator.find_by(:id => params[:id])
  end

我的观点

<%= @task.dummy %>

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

undefined method `dummy' for #<Task:0x007fad7a639d48>

任何想法,有什么问题?

4

2 回答 2

0

你也可以这样decorates_finders调用TaskDecorator

class TaskDecorator < Draper::Decorator
  delegate_all
  decorates :task
  decorates_finders

  def dummy

    print "Hello World"

  end
end

然后你可以通过调用得到你的装饰模型

Task.find(params[:id])
于 2014-11-15T17:43:45.417 回答
0

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

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

和:

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

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

于 2014-04-07T09:48:21.020 回答