我正在尝试使用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>你知道是怎么回事吗?
发布于 2014-04-07 17:48:21
我解决了这个问题,通过替换你的:
TaskDecorator.find_by(:id => params[:id])
通过以下方式:
Task.find(params[:id]).decorate
(编辑:没有足够的声誉来评论最初的问题,所以最初的答案是询问OP是否找到了解决方案。现在编辑以包含我找到的解决方案。诚然,这是一个老帖子,但留下这篇文章,以防其他人遇到同样的问题。)
发布于 2014-11-16 01:43:45
您也可以像这样在TaskDecorator中调用decorates_finders:
class TaskDecorator < Draper::Decorator
delegate_all
decorates :task
decorates_finders
def dummy
print "Hello World"
end
end然后,您可以通过调用
Task.find(params[:id])https://stackoverflow.com/questions/21416690
复制相似问题