2012-09-10 17 views
1

我創建了一個用戶幫手,像這樣:asset_path在自定義類

module UserHelper 

    def user_photo user, size = 30 
    image_tag user_avatar_url(user, size), :height => size, :width => size, :title => user_name(user), :alt => '' if user 
    end 

    alias :user_avatar :user_photo 

    def user_avatar_url user, size = 30 
    user.image ? user.image.thumb("#{size}x#{size}#").url : asset_path('icons/unknown-user-icon.png') 
    end 
end 

但是,我得到一個錯誤:

undefined method `asset_path' for #<UserProfileHtmlTemplater:0x0000000680aad8> 

目前,我有以下幾點:

class UserProfileHtmlTemplater < CompanyTextTemplater 

    include Rails.application.routes.url_helpers 
    include ActionView::Helpers::UrlHelper 
    include ActionView::Helpers::OutputSafetyHelper 
    include ActionView::Helpers::AssetTagHelper 
    include ActionView::Helpers::TagHelper 
    include UserHelper 

.... 
    def prepare_locals_for(user) 
    Hash.new.tap do |locals| 
     locals[:first_name] = user.first_name 
     locals[:last_name] = user.last_name 
     locals[:email] = user.email 

     locals[:photo] = raw user_photo(user, '200x200>') 
     user.profile.visible_fields.each do |field| 
     locals[field.label] = field.value 
    end 
    end 
end 
+0

asset_path是您定義的方法嗎?它不在[Rails API文檔](http://api.rubyonrails.org/)中。 –

+0

不,這是鏈輪的東西 – Vladimir

回答

1

問題可能是因爲asset_path是在Sprockets(Sprockets::Helpers::RailsHelper)中定義的,它不在你的包含德德助手。

而是包括另一個幫手我寧願推薦使用image_path助手(或其別名path_to_image)是在AssetTagHelper和你的情況應該開箱的定義。

1

嘗試添加此:

include Sprockets::Helpers::RailsHelper 
include Sprockets::Helpers::IsolatedHelper 

這將解決您的問題。