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

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

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

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

HTML

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

Q&A

解決済

1回答

894閲覧

htmlの表体裁を整えたい

pppa

総合スコア13

Ruby on Rails

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

HTML

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

0グッド

0クリップ

投稿2018/03/06 14:01

現在、ruby on railsでアンケートの集計表を作っているのですが、表の体裁があと少しのところで整えられません。。
下記図の、集計結果が3行目に3行記載されているところを、1行ずつ配置していきたいです。
現在の状況は以下のイメージです。
イメージ説明

ソースは以下で、集計結果にあたる<% @calc.each do |ky, vl| %>の部分の階層が質問番号、質問内容にあたる<% @questionary.questionary_item.each_with_index do |q_item, i| %>より下に来ているので、現在のような表記になっていると思慮していますが、色々試してみてもうまくいかず、ご助言いただけると助かります。

<table> <tr><th>質問番号</th><th>質問内容</th><th>集計結果</th></tr> <% @questionary.questionary_item.each_with_index do |q_item, i| %> <tr> <td><%= i+1 %></td> <td><%= q_item.content %></td> <% end %> <td> <% @calc.each do |ky, vl| %> <table><tr> <% for v in vl %> <td><%= v.to_i %></td> <% end %> </tr> <% end %> </table> </td> </tr> </table>

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

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

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

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

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

guest

回答1

0

ベストアンサー

@calc がどういうデータ構造なのか分かりませんが,仮にハッシュの配列配列を値とするハッシュだとします。

@questionary.questionary_item.each_with_index のループで,i 番目の行のときに,@calci 番目の要素の値(value)がほしいんですよね。
配列に変換すれば n 番目が取り出せるので,@calc.to_a[i][1] とやればよさそうです。

erb

1<table> 2 <tr><th>質問番号</th><th>質問内容</th><th>集計結果</th></tr> 3 <% @questionary.questionary_item.each_with_index do |q_item, i| %> 4 <tr> 5 <td><%= i+1 %></td> 6 <td><%= q_item.content %></td> 7 <td> 8 <table> 9  <tr> 10 <% for v in @calc.to_a[i][1] %> 11 <td><%= v.to_i %></td> 12 <% end %> 13 </tr> 14 </table> 15 </td> 16 </tr> 17 <% end %> 18</table>

こんな感じでしょうか。
(動かしてはいないので,間違ってたらすいません)

投稿2018/03/06 14:21

編集2018/03/07 03:35
scivola

総合スコア2108

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

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

pppa

2018/03/07 01:07

ありがとうございます。@calcはハッシュなので、頂いたコードでエラーが出てしまったのですが、<% @calc.each_value do |value| %>で、valueだけを出すようにしました。 アドバイスとおり、<% @questionary.questionary_item.each_with_index do |q_item, i| %>に関わるendの位置を変えたところ、表の体裁はよくなったのですが、各集計結果に、全ての結果が入ってしまっている状況でして(質問1の欄には質問1の集計だけ載せたいのに、質問1〜3までの結果が表示されてしまう)、eachの開始場所等確認してみます。 >>修正したコード>> </td></tr></table> <br><br> <table> <tr><th>質問番号</th><th>質問内容</th><th>集計結果</th></tr> <% @questionary.questionary_item.each_with_index do |q_item, i| %> <tr> <td><%= i+1 %></td> <td><%= q_item.content %></td> <%#ここから追加 %> <td> <table><tr> <% @calc.each_value do |value| %> <% for v in value %> <td><%= v.to_i %></td> <% end %> </tr> <% end %> </table> </td> <%#ここまで %> </tr> <% end %> </table> >>
scivola

2018/03/07 03:39

> @calcはハッシュなので、頂いたコードでエラーが出てしまったのですが 回答をちょっと書き間違えましたが(いま訂正しました),@calc はハッシュという前提で書いています。 手元で @calc 等に適当な値を入れてテンプレートのレンダリングをやってみましたが,正常でした。 どんなエラーが出たのでしょうか? なお,pppa さんの「修正したコード」ですが, @calc.each_value do |value| end だと当然 @calc のすべての要素について繰り返します。
pppa

2018/03/07 04:00

ありがとうございます。頂いた内容で試したところ、やりたかった表示になりました。本当にありがとうございます。ちなみに、@calc.to_a[i][1]の[i][1]はどういう意味なのでしょうか?[1]はハッシュのうちvalueを出すためのもの、iはto_iに関連するものなのでしょうか?
scivola

2018/03/07 12:44

@calc.to_a はハッシュを配列化したもの。 例えば h = { morning: 3, evening: 4 } だったら, h.to_a は [[:morning, 3], [:evening, 4]] になりますね。 @calc.to_a[i] はその配列の i 番目の要素。この i は @questionary.questionary_item.each_with_index のループで作られたインデックスですね。 最後の [1] はおっしゃるとおり,もとハッシュだったときの value にあたる部分をとるためですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問