質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

718閲覧

複数枚画像の投稿機能でNameErrorが出力され、困っています。

qwertyuiopp

総合スコア3

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2021/10/23 13:50

編集2021/10/24 03:22

イメージ説明
イメージ説明

前提・実現したいこと

こんばんは。
現在、アプリケーションにて複数枚画像の投稿機能を実装しています。
仕様としては、投稿時に複数枚画像を投稿することができる⇨トップページでは複数投稿した画像の一枚が表示される⇨詳細ページでは一つの投稿に紐づく全ての写真が表示されるようにしたいです。

アソシエーション・file_fieldのname属性・ストロングパラメーター・それぞれのビューファイルの記述が完了した為、jsファイル記述する前に一旦エラーが出力されないか挙動の確認を行ったところ
NameError in Recipes#newが出力されて困っています。

解決方法がお分かりになる方がいらっしゃいましたら、ご教授お願い致します。

発生している問題・エラーメッセージ

ターミナル

ActionView::Template::Error (undefined local variable or method `image' for #<#<Class:0x00007fb6fcdb4a38>:0x00007fb6fcdbf0c8> Did you mean? image_url):

該当のソースコード

recipes_controller

class RecipesController < ApplicationController def index @recipes = Recipe.order('created_at DESC') end def new @recipe = RecipesTag.new end ~~~省略~~~ private def recipe_params params.require(:recipes_tag).permit(:title, :material, :text, :category_id, :time_require_id, :name, :recipe_id, images: []).merge(user_id: current_user.id) end ```models/recipe.rb

class Recipe < ApplicationRecord
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :user
belongs_to :category
has_many_attached :images

``` view/index.html.erb ``` <%# レシピ一覧の表示 %> <div class="recipe__content"> <div class="subtitle"> 新着レシピ </div> <div class="recipe-contents"> <% @recipes.each do |recipe| %> <%= render partial:"recipe", locals: {recipe: recipe} %> <% end %> </div> </div> ``` views/_recipe.html.erb ``` <%= link_to recipe_path(recipe.id) do %> <div class="list"> <div class="recipe-image-content"> <% recipe.images.find do |image| %> <%= image_tag image, class:'recipe-images' %> <% end %> </div> ~~~省略~~~ </div> <% end %> ``` views/new.html.erb ``` <div class="main"> <ul> <% @recipe.errors.full_messages.each do |msg| %> <li><%= msg %></li> <% end %> </ul> <div class="inner"> <h2 class="new-recipe">新しいレシピを投稿する</h2> <%= render partial:"form" %> </div> </div> ``` views/_form.html.erb (コメントアウト部分は、現在写真が一枚ずつの投稿のためeach文を使用するとエラー出力されるのでコメントアウトしています) ``` <%= form_with model: @recipe, url: recipes_path, local: true do |f| %> <div class="field_type"> <div class="field"> <div class="field_image"> <%= f.label :images, "料理の画像" %><br /> <%= f.file_field :images, name: 'recipe[images][]', id:"cook_image" %> <div id="image-list"></div> <%# @recipe.images.each do |image| %> <% @recipe.images %> <%= image_tag image, class:'images' %> <%# end %> </div> </div> ~~~省略~~~ ``` javascript/preview.js ``` document.addEventListener('DOMContentLoaded', function (){ if (document.getElementById('cook_image')){ const ImageList = document.getElementById('image-list'); const createImageHTML = (blob) => { const imageElement = document.createElement('div'); const blobImage = document.createElement('img'); blobImage.setAttribute('src', blob); imageElement.appendChild(blobImage); ImageList.appendChild(imageElement); }; document.getElementById('cook_image').addEventListener('change', function(e){ //const imageContent = document.querySelector('img'); //if (imageContent){ //imageContent.remove(); //} const file = e.target.files[0]; const blob = window.URL.createObjectURL(file); createImageHTML(blob); }); } }); ``` ### 試したこと image_urlをどこかに記述しなければいけないようだが、urlは存在しない。。 ### 補足情報(FW/ツールのバージョンなど) ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

eachをコメントアウトしたので、image が未定義となり画像のエラーになります。
「imageがひとつなのでeachがエラー」ということはありえません。
エラーになったとすると 一つもないものがあり、それが nil だから という可能性が高いですが、その時のエラーメッセージが無いので単なる予想・想像・推定。

投稿2021/10/24 02:42

winterboum

総合スコア23340

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qwertyuiopp

2021/10/24 03:23

有難うございます。 コメントアウトを解除した際のエラー写真も添付しましたので、ご確認の程よろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問