web-dev-qa-db-ja.com

Railsアプリで<img src =>をimage_tagに変換する方法

これは私の最初の投稿であり、ひどく愚かに聞こえるかもしれません。私は私の最初のRailsアプリを構築しています。

私の_index.html.erb_にこの行があります

_    <img src="/assets/Rand_front/<%= @random_image%>", style='height:50vw;width:100vw;margin-bottom:20px;' >
_

_image_tag_の代わりに_img src_を使用したい

コードをラップする正しい方法は何ですか?

これまでに試しました<%= image_tag ( "/assets/Rand_front/<%= @random_image%>", style='height:50vw;width:100vw;margin-bottom:20px;') %>

および<%= image_tag ( "/assets/Rand_front/<%= @random_image%>"), style='height:50vw;width:100vw;margin-bottom:20px;' %>

その他の多くのバージョンですが、どれも動作しないようですが、何が問題ですか?そして、私はそれを適切にどのように書くべきですか?

この_<%= @random_image%>_ビットは、コントローラーのindexメソッドからこの変数を取得しています。

_def index
   @products = Product.all.order(created_at: :desc).group_by(&:category_id)
    @images  = ["1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg", "6.jpg", "7.jpg", "8.jpg", "9.jpg", "10.jpg"]
    @random_no = Rand(10)
    @random_image = @images[@random_no]
end
_
9
Slowboy
<%= image_tag ( "Rand_front/#{@random_image}", style='height:50vw;width:100vw;margin-bottom:20px;') %>

image_tagは、パスの先頭に自動的にassetsを追加します

チェック イメージタグ ドキュメント

9
Qaisar Nadeem

私が間違っていない場合は、アセットフォルダーにRand_frontフォルダーがあるため、image_tag("#{@random_image}")を呼び出す必要があります。デフォルトでは、image_tagヘルパーは、アセットディレクトリ内のすべてのフォルダーでイメージ名を確認する必要があるためです

CSSプロパティについては、CSSプロパティを目的の値のキーとして渡すことができるoptionsハッシュの使用を検討できます。

image_tag("#{@random_image}", height: 20, width: 20)前の回答のドキュメントを確認できます

1
Black Enigma

これがRuby on Railsが明示的に処理しているものです

 <%= image_tag("source", {:style => "width:100px;"}) %>

(Rubyを使用すると、({})なしでこのコードを使用できます)、

私にとって、まず、これがどのようにRuby on Rails実際にコードを実行している)かを知ることが重要です。

言い換えると、はいRubyはコードを理解するので、({})形式を省略できます。それがいくつかを明確にするのに役立つことを願っています...

1
jso1919