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

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

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

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

Ruby

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

HTML

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

Q&A

解決済

2回答

1155閲覧

ruby on rails / slim 画像の枚数分だけタイトルを繰り返し表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

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

HTML

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

0グッド

0クリップ

投稿2018/03/11 13:41

タイトル部分、簡潔に説明できずにすみません。以下のことをしたいです。
slimでhtml内にrubyを埋め込み、第◯◯問の〇〇部分に1、2、3,,,と順番に@questionsから取り出される画像の枚数分、表示させたいのですが、どう書けばよいでしょうか。
イメージとしては、仮に@questionsに画像が3枚あれば、
第1問
「画像」
第2問
「画像」
第3問
「画像」
という風にしたいです。

現在このように書いています。

html

1 2 - @questions.each do |question| 3 - (1..question.count).each do |number| 4 li.column.is-full-tablet.question-image__title 5 | 第#{number}問 6 = link_to image_tag(question.question_image, alt: question.title) 7

この書き方では、undefined method 'count'と言われてしまいます。正しい書き方を教えてください。

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

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

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

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

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

guest

回答2

0

@questions の素性が分からないのと,なぜ二重ループになっているのかよく分からないのですが,@questions の要素ぶんだけ question_image を表示すればいいんですよね?

こういうことでしょうか:

slim

1- @questions.each.with_index(1) do |question, number| 2 li.column.is-full-tablet.question-image__title 3 | 第#{number}問 4 = link_to image_tag(question.question_image, alt: question.title)

(手元で動かしてはいないので,正しく動かなかったらおっしゃってください)

each.with_index(1) の部分に説明が要りますね?
ちゃんと理解するには,Enumerator というちょっと抽象的なものを理解しないといけないのですが,とりあえずはこう書いておけばインデックス付きで回してくれる,と思っていただければ。
で,with_index(1)1 はインデックスの開始値です。(デフォルトは 0

とりえあずこのメソッドの公式リファレンスは Enumerator#with_index です。

投稿2018/03/11 14:27

scivola

総合スコア2108

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

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

退会済みユーザー

退会済みユーザー

2018/03/11 14:35

さらなる勉強のヒントまでくださりありがとうございました! インデントもきちんと修正しておきます!
guest

0

ベストアンサー

こんばんは。

インデックスを使いたい場合は、
each_with_indexとかwith_indexが使えます。

###each_with_indexを使う場合

https://ref.xaio.jp/ruby/classes/enumerable/each_with_index

html

1 - @questions.each_with_index do |question, index| 2 li.column.is-full-tablet.question-image__title 3 | 第#{index + 1}問 4 = link_to image_tag(question.question_image, alt: question.title)

###with_indexを使う場合
http://ruby-doc.org/core-2.0.0/Enumerator.html#method-i-with_index

html

1 - @questions.each.with_index(1) do |question, index| 2 li.column.is-full-tablet.question-image__title 3 | 第#{index}問 4 = link_to image_tag(question.question_image, alt: question.title)

投稿2018/03/11 14:27

sakamoty

総合スコア40

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

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

scivola

2018/03/11 14:30

sakamoty さんのご回答に気づかず,ダブっちゃいました。 ところで,= link_to のところはたぶんインデントが間違ってますよね(元のコードも)。
退会済みユーザー

退会済みユーザー

2018/03/11 14:34

うまくいきました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問