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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

720閲覧

DBに保存?されているが一覧画面に文字が表示されない

hosio

総合スコア47

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2022/05/19 08:32

前提・実現したいこと

一覧画面に投稿した文字を表示させたい

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

投稿一覧と新規投稿を同じ画面で表示させたいのですが...
rails consoleから直接データを保存した場合は、投稿一覧に表示されます。
新規投稿でデータを入力し保存を押すと、投稿一覧でデータ部分が空欄になり文字が表示されません。
(ただし投稿した分のスペースは保存するたびに空いていくので何故文字が表示されないのかが分かりません)

該当のソースコード

index.html

1       <% @books.each do |book| %> 2 <tr> 3 <td><%= book.title %></td> 4 <td><%= book.body %></td> 5 <td><%= link_to "Show",book_path(book.id) %></td> 6 <td><%= link_to "Edit",edit_book_path(book.id) %></td> 7 <td><%= link_to 'Destroy',book_path(book.id), method: :delete %></td> 8 </tr> 9 <% end %> 10. 11. 12. 13       <h2>New book</h2> 14 <%= form_with model: @book, url:books_path, method: :post do |f| %> 15 <div class="field"> 16 <label for="book_title">Title</label> 17 <%= f.text_field :title %> 18 </div> 19 <div class="field"> 20 <label for="book_body">Body</label> 21 <%= f.text_area :body %> 22 </div> 23 <div class="actions"> 24 <%= f.submit "Create Book" %> 25 </div> 26 <% end %> 27

books_controller

1def new 2 @book=Book.new 3end 4 5def create 6 @book=Book.new 7 @book.save 8 redirect_to'/books' 9end 10 11def index 12 @books=Book.all 13end

どなたか解決よろしくお願いします。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2022/05/19 08:48

ルーティングはちゃんどできているのでしょうか? またrails cにおいてBook.allでレコードは取得できるのでしょうか?
hosio

2022/05/19 09:07

ルーティングはresourcesメゾットを使用しており、books_path, method: :post でcreateアクションが実行されると認識していますがどうでしょうか? reils cでBook.allを実行したところ、新規投稿から保存したデータが title:nil body:nil となっていました。 どうすれば、保存ができるようになりますか?
退会済みユーザー

退会済みユーザー

2022/05/19 09:21

保存されていませんね createアクションにおいて送られてきたパラメータを取得する必要があります。 @book = Book.new @book.title = params[:title] @book.body = params[:body] @book.save としてみてはどうでしょうか またパラメータの受け取り方はストロングパラメータと検索していただければ分かりやすい記事があると思います
hosio

2022/05/19 09:26

できました! ありがとうございます!
退会済みユーザー

退会済みユーザー

2022/05/19 09:30

postでパラメータを送ってもcreateアクションで受け取る処理を書かないと 値は格納されません。 railsでは送信されるパラメータは一律paramsとして受け取ることができるので覚えておくのがいいでしょう
no1knows

2022/05/19 11:32

個人的な意見ですが、初学者であればまずはscaffoldを使ってRailsの基本の型を覚えたほうが近道かと思います。 もちろん下記のように1行1行、なにをしているかきちんと理解する必要があるのですが。 http://kanjihtmt.github.io/blog/2015/04/02/scaffold/ いつでもscaffoldをベースとした書き方にするとRails wayに沿う形になりやすいので、就職後、他のエンジニアがみてもわかりやすくて良いかと思います。
guest

回答1

0

自己解決

解決できました。
ありがとうございました。

投稿2022/05/23 23:33

hosio

総合スコア47

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問