1

次のようなユーザーヘルパーを作成しました。

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
4

2 に答える 2

1

問題はおそらく、asset_pathSprockets(Sprockets::Helpers::RailsHelper)で定義されており、含まれているヘルパーにはないという事実にあります。

さらに別のヘルパーを含める代わりに、で定義されているimage_pathヘルパー(またはそのエイリアス)を使用することをお勧めします。この場合、そのまま使用できます。path_to_imageAssetTagHelper

于 2012-09-10T14:48:30.137 に答える
1

これを追加してみてください:

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

それはあなたの問題を解決します。

于 2013-03-08T18:37:35.740 に答える