

Railsを使って、hashのvalueにimage_tagを入れる方法はありますでしょうか？

app/の下にview_objects/を作ってその中にviewに関するロジックをclassごとにいれています。  
できるだけviewにロジックを書き込まないようにするためです。  
view_objects/内のクラスで作ったインスタンス変数（hash型）をview内で展開して表示させています。

[code]

    # view_objects/article_view.rb
    class ArticleView
      attr_reader :header
    
      def initialize(data)
        @header = { 
          title: data.title,
          image: '= image_tag ' + data.img
        }
      end
    end
    
    
    # view/article/index.html.slim
    
     table.table
     - @article_view.header.each do |key, value|
       tr
         td = key
         td = value
    
[/code]

headerのハッシュ型の中には画像リンクが入っているのですが、どうしてもリンク元の画像が参照されずに、そのURLだけが文字列で記載されてしまいます。  
どうすればいいのでしょうか？


CC BY-SA 3.0
2016-07-12T16:10:22.343
27578
2016-07-13T01:22:34.713
14900
question
ruby-on-rails ruby
railsでhashのvalueにimage_tagを入れる方法は？


一般的に View 以外に具体的なタグを入れるのは良いスタイルとはいえませんが、どうしてもというのであれば、以下のように `content_tag`
を使うことができます。

[code]

    class ArticleView
      include ActionView::Helpers::TagHelper
      attr_reader :header
    
      def initialize(data)
        @header = { 
          title: data.title,
          image: content_tag(:img, "", :src => data.img),
        }
      end
    end
    
[/code]

Partial view、Helper、デコレータ (DraperやActiveDecoratorなどの非標準機能) の利用も検討してみてください。


CC BY-SA 3.0
2016-07-13T01:22:34.713
27585
2016-07-13T01:22:34.713
76
27578
answer