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

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

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

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

Ruby on Rails

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

解決済

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

hosio
hosio

総合スコア41

Ruby

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

Ruby on Rails

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

1回答

0評価

0クリップ

113閲覧

投稿2022/05/19 08:32

前提・実現したいこと

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

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

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

該当のソースコード

index.html

       <% @books.each do |book| %> <tr> <td><%= book.title %></td> <td><%= book.body %></td> <td><%= link_to "Show",book_path(book.id) %></td> <td><%= link_to "Edit",edit_book_path(book.id) %></td> <td><%= link_to 'Destroy',book_path(book.id), method: :delete %></td> </tr> <% end %> . . .        <h2>New book</h2> <%= form_with model: @book, url:books_path, method: :post do |f| %> <div class="field"> <label for="book_title">Title</label> <%= f.text_field :title %> </div> <div class="field"> <label for="book_body">Body</label> <%= f.text_area :body %> </div> <div class="actions"> <%= f.submit "Create Book" %> </div> <% end %>

books_controller

def new @book=Book.new end def create @book=Book.new @book.save redirect_to'/books' end def index @books=Book.all end

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

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

dikeda

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 となっていました。 どうすれば、保存ができるようになりますか?
dikeda

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

できました! ありがとうございます!
dikeda

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に沿う形になりやすいので、就職後、他のエンジニアがみてもわかりやすくて良いかと思います。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

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

Ruby on Rails

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