2012-09-10 19 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 

这将解决您的问题。