undefined方法错误draper gem

时间:2014-01-28 20:59:09

标签: ruby-on-rails-4 draper

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

任何想法,出了什么问题?

2 个答案:

答案 0 :(得分:0)

我通过替换你的:

解决了这个问题

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

使用:

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

(编辑:没有足够的声誉来评论原始问题所以原来的答案是询问OP是否找到了解决方案。现在编辑以包含我找到的解决方案。不可否认是一个旧帖子但是留下这个以防任何人否则会遇到同样的问题。)

答案 1 :(得分: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])