web-dev-qa-db-ja.com

rails-Active Storage経由でファイルをアップロードした後、画像を表示する

Rails 5.1.2にあるプロジェクトがあり、Active Storageを実装しようとしています。オンラインでいくつかのチュートリアルを実行すると、ActiveStorageをセットアップできます。 active_storage_blobsおよびactive_storage_attachmentsテーブル内に保存されているデータ。

  1. チュートリアル1
  2. チュートリアル2

また、user.avatar.attached?を実行して確認したところ、問題が解決したので、問題は解決しました。

私が問題を抱えているのは、画像を表示することです、私は試しました

<%= image_tag(url_for(user.avatar)) %>

NoMethodError:未定義のメソッド `active_storage_attachment_path '

アクティブストレージをセットアップするために行ったこと

インストールコマンドを実行しました

Rails active_storage:install

これによりエラーが発生しましたタスク 'active_storage:install'のビルド方法がわかりません

しかし、次のコマンドは機能しました

Rails activestorage:install

gemfile内にgem 'activestorage'を追加しました

これは私のstorage_services.ymlの中にあるものです

test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

development.rbの中に追加しました

config.active_storage.service = :local

Userモデル内にhas_one_attached :avatarを追加しました

更新時にコントローラー内に添付コードを追加しました

user.avatar.attach(params[:user][:avatar])
  1. データベースに追加されている画像を見ることができますが、
  2. ルートのストレージディレクトリに保存されている画像を見ることができます

それでも表示できません、

ここで何が欠けていますか?画像をビューに表示するにはどうすればよいですか?なぜこのエラーが発生するのですか

NoMethodError:未定義のメソッド `active_storage_attachment_path '

8
Baig

次の行を追加した場合、config/appication.rbファイルを確認できますか。

require "active_storage/engine"

Active Storage gemと統合されているため、Railsバージョンを5.2 betaにアップグレードすることをお勧めします。アプリケーションが十分なテスト範囲でカバーされている場合は、今すぐ実行できます。 5.1から5.2への変更はそれほど多くありません。 http://edgeguides.rubyonrails.org/5_2_release_notes.html を参照してください。ただし、まだ安定していないため、そのリスクを冒せるかどうかを確認する必要があります。

4
punitcse

あなたは間違っています、あなたは次のコードを置き換える必要があります

<%= image_tag(url_for(user.avatar)) %>

<%= image_tag(user.avatar) %>

url_forは、画像タグではなく正確なURLを生成するために使用されます。

0
KamalPanhwar