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

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

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

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

Q&A

1回答

1377閲覧

.timesで繰り返し表示のHTML要素に別の変数を入れることは可能でしょうか?

rui-watanabe

総合スコア18

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/08/23 12:15

前提・実現したいこと

Rails初心者です。
現在商品情報の編集ページを作成しています。
コントローラー内で4.timesと記述してネストさせた値を繰り返しているのですが、それぞれ違う写真を表示させたいと思っています。

この繰り返された値に、@product.product_images.first.image_url、@product.product_images.second.image_urlなどと一つずつ書き換えることは可能でしょうか。

ご回答いただければ非常に助かるので、よろしくお願いいたします。

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

.timesで繰り返し表示で別の変数を入れたい

products_controller

def edit 4.times{@product.product_images.build} end

products.edit.html

@product.product_images.first.image_urlの変数を変えたい

= form_for @product, builder: CustomFormBuilder do |f| .sell-product__container__form .upload-image %h3.upload-image__head 出品画像 %span.require.upload-image__head__require 必須 %p 最大4枚までアップロードできます .upload-wrapper = f.fields_for :product_images do |i| .upload-image__box .upload-image__box__drop .upload-image__box__drop__display %ul %label .upload-image__box__file = i.file_field :image_url, class: 'upload-image__box__file__input' %pre.upload-image__box__file__description ドラッグアンドドロップ またはクリックしてファイルをアップロード .img-view = image_tag "#{@product.product_images.first.image_url}",class:"img-view__preview" %p.link-preview      

model

product.rb has_many :product_images, dependent: :destroy accepts_nested_attributes_for :product_images, allow_destroy: true product_images.rb belongs_to :product

補足情報(FW/ツールのバージョンなど)

Ruby version 2.5.1
Rails version 5.2.3

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

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

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

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

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

guest

回答1

0

:product_images do |i| の i が imagesの様なものですから
@product.product_images.first.image_url を
i.object.image_url
とすればよいかと。

投稿2019/08/23 12:46

winterboum

総合スコア23284

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

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

rui-watanabe

2019/08/23 13:48 編集

ご回答ありがとうございます。 i.first.image_urlなどと繰り返して表示はできるのですが、コントローラーの方で同じHTML要素を4回繰り返す指定をしているので、その繰り返された1つ1つのHTML 要素にまた別の変数(1回目がi.frist.image_url、2回目がi.second.image_urlなど)を入れることは可能でしょうか。
winterboum

2019/08/23 13:34 編集

何をしたいのか、がわかりません。 仮にこんなことが可能なら、こう書きたい というのを書いて頂けますか
rui-watanabe

2019/08/23 13:54

4つの同じコードのプレビュー画面に、それぞれユーザーが登録した違う画像を表示させたいです。 繰り返し表示は、コントローラーで.4.timesと記述することで成功しています。 その繰り返し行われているHTML( %labelの下のコードが4回繰り返されている)に、別の変数を定義する方法があれば教えていただきたいということです。
winterboum

2019/08/23 13:59

自然言語で言われてもよくわからないのです。i.first.image_url では何が問題なのかもわからない。 仮にこんなことが可能なら、こう書きたい というのをプログラム的に書いて頂けますか
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問