2014-01-28 29 views
0

我想用戶draper寶石,看起來像我設置得很好,但是,當我調用我的draper方法內的方法時,我得到一個「未定義的方法錯誤」這裏是我所做的遠。undefined方法錯誤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> 

什麼想法,有什麼不對?

回答

0

我通過更換解決了這個問題您:

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

有:

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

(編輯:沒有足夠的聲譽在原來的問題所以原來的答案發表評論問是否OP找到了一個解決方案,現在編輯包含我找到的解決方案,不過,這是一箇舊帖子,但如果有其他人遇到同樣的問題,請留下此處。)

0

您也可以撥打decorates_findersTaskDecorator這樣的:

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

    def dummy 

    print "Hello World" 

    end 
end 

然後你就可以通過調用

Task.find(params[:id]) 
讓您的裝修樣板