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

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

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

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

Q&A

解決済

2回答

6366閲覧

RailsでFirst argument in form cannot contain nil or be emptyと表示された時の対処法

mokemoke1925

総合スコア3

Ruby on Rails

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

0グッド

0クリップ

投稿2020/04/22 07:05

###実現したいこと
イメージ説明
Railsで上記のような一覧と投稿が同一ページで見れるサイトを作りたいです。

###質問
form_for で投稿機能を作りたいのですが、表示されません。
ネットでエラーメッセージを検索したり、form_forの使い方を調べたり
したのですが、解決することができませんでした。

教えていただけると大変ありがたいです。
よろしくお願いします。

【エラーメッセージ】
イメージ説明

###該当のソースコード
【index.html.erb】

<table> <thead> <tr> <th>Title</th> <th>Body</th> <th></th> </tr> </thead> </table> <h2>New book</h2> <%= form_for(@book) do |f| %> <h4>Title</h4> <%= f.text_field :titel %> <h4>Body</h4> <%= f.text_area :body %> <%= f.submit 'Create Book' %> <% end %>

【books_controller.rb】

class

1 def show 2 end 3 4 def index 5 end 6 7 def new 8 @book = Book.new 9 end 10 11 def create 12 book = Book.new(book_params) 13 book.save 14 redirect_to books_path 15 end 16 17 def edit 18 end 19 20 private 21 def book_params 22 params.require(:book).permit(:title, :body) 23 end 24 25end 26

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

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

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

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

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

guest

回答2

0

ベストアンサー

<%= form_for(@book) do |f| %>
に対して 最初の引数がnilではだめ と言ってます
controllerをみると
def index end
です
def index @book = Book.new end
としてください

次のステップで一覧が出ないという問題が出てくるかも。したら
def index @books = Book.all @book = Book.new end
です

投稿2020/05/06 08:09

winterboum

総合スコア23645

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

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

mokemoke1925

2020/05/08 14:07

ありがとうございます!! ご指摘の通りに直したら、ちゃんと表示されました! 図々しいお願いではありますが、ご指摘のコマンドがどういう意味のコマンドなのか教えて頂きたいです! 1、「@book = ~」と書く理由は form_for() の()の中が @book になっているからですか? 2、Book.new の new とはどういう意味ですか?   新規投稿という意味でしょうか? 3、def index end の中に書く理由は新規投稿した内容を表示するためですか? 3つも質問してしまい、申し訳ありません。 もしよろしければ教えて頂けると、とても有り難いです。 winterboum さんのおかげでやっと進めることができます。 教えていただき、本当にありがとうございます。
winterboum

2020/05/08 21:05

1 yes 3 index.html への情報ですから 2 これrubyの基本の基本です。この意味がわからないようですとrails実装に差し支えます。rubyの入門を学んでださい。
mokemoke1925

2020/05/09 12:19

回答していただきありがとうございます。 全然理解できていないので、勉強し直します! 今回は教えていただき、本当にありがとうございました!
guest

0

rb

1<%= f.text_field :**titel** %>

ここのつづりが間違っているからでは? titel => title

投稿2020/04/22 07:12

chocolate24

総合スコア125

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

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

mokemoke1925

2020/04/22 07:55

ご回答くださりありがとうございます! ご指摘箇所を訂正しましたが、結果は変わりませんでした。。
chocolate24

2020/04/22 09:31

コントローラーでindexアクションの中に @user = User.newと書いてみてください。
mokemoke1925

2020/04/22 10:29

ありがとうございます! uninitialized constant BooksController::User def index @user =User.new end def new と表示されました
chocolate24

2020/04/22 11:39

もう一回考えてみます。
mokemoke1925

2020/04/22 12:12

ご親切に対応してくださりありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問