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

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

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

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

Ruby on Rails 6

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

2177閲覧

rails 投稿後の記事の並びについて

rrtts667

総合スコア18

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

Ruby on Rails 6

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/08/05 08:38

現在記事投稿後の記事を最初の4つの記事は横並びにして5つ目の記事は4つ目の記事の下にに順々追加していくようにしたいのですが、どのようにすればよろしいでしょうか?

記事が横に4、縦に3列を作りたいです。

4つ目の記事投稿画面
イメージ説明
5つ目記事投稿画面
イメージ説明

tweets_controller

rails

1 2 def index 3 @tweets = Tweet.includes(:user) 4 end

haml

1.Sign-in 2 投稿一覧 3 .Top 4 - @tweets.each do |tweet| 5 .article 6 = link_to tweet_path(tweet.id) ,class: "article-link" do 7 = image_tag tweet.image.url,class: "article-uplord-image" 8 %br/ 9 .article-title 10 = tweet.title

css

1.Sign-in{ 2 margin: 0px 80px 0px 80px; 3 background-color: white; 4 text-align: center; 5 font-size: 18px; 6 padding-top: 30px; 7} 8.Top{ 9 padding-top: 30px; 10 margin: 0px 30px 0px 30px; 11 display: flex; 12 justify-content: center; 13} 14.article{ 15 width: 200px; 16 height: 200px; 17 margin: 0px 10px 0px 10px; 18} 19 20.article-link{ 21 text-decoration: none; 22} 23.article-uplord-image{ 24 width: 200px; 25 height: 150px; 26} 27.article-title{ 28 text-align: center; 29 30} 31 32.view{ 33 margin: 0px 80px 0px 80px; 34 background-color: white; 35}

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

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

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

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

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

guest

回答2

0

cssの.Topにflex-wrap: wrap;width又はmax-widthを追加し調整するとよいかと思います。


気になること

  • .Topというクラス名からは、記事以外のものが含まれている可能性がある.articlesあたりが無難かと
  • "article-uplord-image" upload

投稿2020/08/05 12:17

asm

総合スコア15147

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

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

0

ベストアンサー

HTML/CSSで解決できると思います。

Haml

1.images 2 - @tweets.each do |tweet| 3 .article 4 = link_to tweet_path(tweet.id) ,class: "article-link" do 5 = image_tag tweet.image.url,class: "article-uplord-image" 6 %br/ 7 .article-title 8 = tweet.title

CSS

1.images{ 2 display: flex; 3 flex-wrap: wrap 4} 5.article{ 6 width: 25% 7}

flex-wrapは親要素の横幅いっぱいになった段階で子要素を折り返して表示する機能です。
子要素の横幅を25%とすることでちょうど4つ分表示できます。

padding, marginなどのデザインは調整してみてください。

縦3列の実現はページネーションを使うか、コントローラ側で3×4=12個以上のレコードは取得しないよう工夫すると良いかと。
後者であれば下記のとおりですね。

def index   @tweets = Tweet.includes(:user).limit(12) end

※エディタなしで書いているので誤字あるかもしれません。エラー出たらすみません。
解決できない場合は返信ください。

投稿2020/08/05 12:16

編集2020/08/05 12:17
shota-imoto

総合スコア37

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問