Rails 5.1.2
にあるプロジェクトがあり、Active Storageを実装しようとしています。オンラインでいくつかのチュートリアルを実行すると、ActiveStorageをセットアップできます。 active_storage_blobs
およびactive_storage_attachments
テーブル内に保存されているデータ。
また、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])
それでも表示できません、
ここで何が欠けていますか?画像をビューに表示するにはどうすればよいですか?なぜこのエラーが発生するのですか
NoMethodError:未定義のメソッド `active_storage_attachment_path '
次の行を追加した場合、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 を参照してください。ただし、まだ安定していないため、そのリスクを冒せるかどうかを確認する必要があります。
あなたは間違っています、あなたは次のコードを置き換える必要があります
<%= image_tag(url_for(user.avatar)) %>
と
<%= image_tag(user.avatar) %>
url_forは、画像タグではなく正確なURLを生成するために使用されます。