🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

1回答

880閲覧

railsとdockerを使ってアプリを作りたいが、投稿一覧ページに投稿が表示されない

kawasaki4563

総合スコア32

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

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

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/01/28 06:54

編集2021/01/29 02:06

下記のサイトを参考に投稿アプリを作ったのですが、
【Rails 5.2】 Active Storageの使い方
新規投稿機能の実装
active strageを使って画像投稿機能をつくっているのですが、そのときに投稿一覧ページに投稿の表示がされないというトラブルになっています
エラーメッセージはなく、単純に動かないというトラブルです
困っています助けてください

#該当のソースコード
いか、投稿一覧ページ(index.html.erb)

<h2>ALL POST!</h2> <%= link_to 'もう一回行っちゃう?wwww', new_post_path %> <table> <tr> <th>title</th> <th>text</th> <th>image</th> <th colspan="3"></th> </tr> <% @comment.each do |comment| %> <% @posts.each do |post| %> <tr> <td><%= post.title %></td> <td><%= post.body %></td>   <% if @comment.image.attached? %> <td><%= image_tag @comment.image %></td> <% end %> <% end %> </tr> <% end %> </table> <%= yield %>

以下、新規投稿ページ

<%= form_with model: @post, local: true do |form| %> <p> <%= form.label :タイトル %><br> <%= form.text_field :title %> </p> <p> <%= form.label :内容 %><br> <%= form.text_area :body %> </p> <p> <%= form_with model: @comment, local: true do |form| %> <div class="field"> <%= form.label :images %><br> <%= form.file_field :images ,multiple: true,authenticity_token: true%> <p> <td><input type="submit" value="投稿"></td> </p> <% end %> </div> </p> <p> <%= yield %> <% end %> </p>

以下、テキストを投稿機能を作るときに作ったcontroller

class PostsController < ApplicationController def index @posts = Post.all @comment = Comment.all end def new @post = Post.new end def create @post = Post.new(post_params) @post.save redirect_to action: 'index' end private def post_params params.require(:post).permit(:title, :body) end end

いか、画像投稿機能を作るときに作ったcontroller

class CommentsController < ApplicationController def idndex @comment = Comment.all end def new @comment = Comment.new end def create @comment = Comment.create params.require(:comment).permit(:content, :image) # POINT @comment.save redirect_to @comment end def show @comment = Comment.find(params[:id]) end def edit @comment = Comment.find(params[:id]) end def update @comment = Comment.find(params[:id]) @comment.update params.require(:comment).permit(:content, :image) # POINT redirect_to @comment end end

ログ

Processing by PostsController#create as HTML web_1 | Parameters: {"utf8"=>"✓", "authenticity_token"=>"r53Nupv5tPGPeSQOiMq/tktaETd2Vf0sL712vnlqkoc5gHDvdpiAemcaPPJL4OY55Z/YmHw85xJm6kAP4avMKw==", "post"=>{"title"=>"ddddddd", "body"=>"xxxxxxxxxxxxxx"}, "images"=>["IMG_20201122_180927.jpg"]} web_1 | (0.4ms) BEGIN web_1 | ↳ app/controllers/posts_controller.rb:14 web_1 | Post Create (0.6ms) INSERT INTO `posts` (`title`, `body`, `created_at`, `updated_at`) VALUES ('ddddddd', 'xxxxxxxxxxxxxx', '2021-01-28 08:31:27', '2021-01-28 08:31:27') web_1 | ↳ app/controllers/posts_controller.rb:14 web_1 | (2.1ms) COMMIT web_1 | ↳ app/controllers/posts_controller.rb:14 web_1 | Redirected to http://localhost:3000/posts web_1 | Completed 302 Found in 15ms (ActiveRecord: 3.1ms) web_1 | web_1 | web_1 | Started GET "/posts" for 172.18.0.1 at 2021-01-28 08:31:27 +0000 web_1 | Cannot render console from 172.18.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 web_1 | Processing by PostsController#index as HTML web_1 | Rendering posts/index.html.erb within layouts/application web_1 | Comment Load (0.5ms) SELECT `comments`.* FROM `comments` web_1 | ↳ app/views/posts/index.html.erb:10 web_1 | Rendered posts/index.html.erb within layouts/application (3.1ms) web_1 | Completed 200 OK in 190ms (Views: 161.2ms | ActiveRecord: 0.5ms) web_1 | web_1

#試したこと
<%= yield %>を投稿詳細ページの方にも追加しました
##動作環境
intel mac big sur
rails 5.2.2
ruby 2.6.5
docker 20.10.0

#追記
posts/index.html.erbにの以下のコード
<% @posts.comment.each do |comment|%>
を載せて見た後に、postのほうのmodelに以下のコードを追加したら
belongs_to :comments
エラーになってしまいました。
スクショを貼っておきます
イメージ説明

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

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

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

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

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

winterboum

2021/01/28 08:47

いか、投稿一覧ページ(index.html.erb) はどっちの index?
kawasaki4563

2021/01/28 08:49

postsのほうですね わかりづらくてすいません
guest

回答1

0

<% @comment.each do |comment| %> <% @posts.each do |post| %>
となってますが、多分commentが一件もなくて、何もせずに終わるのでしょう。
そもそも 全てのpostを全てのcomment毎に表示するっておかしいですよね。
@postsでloopさせ、commentは post.comments で得られるものだけ表示
なのでは?

投稿2021/01/28 08:52

winterboum

総合スコア23567

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

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

kawasaki4563

2021/01/28 09:11 編集

2つのコントローラーの結果を一つのビューに結びつけようとするからおかしかったのか インスタグラムのようにあ画像と文章を一つのページに表示させようと思ったんですよね その場合ってどうやってやればいいのでしょうか
winterboum

2021/01/28 09:22

ですから @posts.each do |post| postの表示 post.comments.each do |comment| commentの表示 modelで関連定義してあること。
kawasaki4563

2021/01/28 22:59

modelの関連定義ってどうやってやるのでしょうか model 関連定義 でしらべてみたのですがちょっとわからなくて
kawasaki4563

2021/01/29 03:46

やってみてだめだったのでそちらについきしました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問