前提・実現したいこと
【Rails】form_withメソッドを使用して入力した内容をレコードに保存したい
発生している問題・エラーメッセージ
行った作業の流れ
①newアクション内で変数を生成
②viewファイルにform_withメソッドを記述
③newアクションのパスを実行すると以下のエラー文が発生する
ArgumentError in Informations#new wrong number of arguments (given 1, expected 0)
該当のソースコード
rails
1(controller) 2 def new 3 @information = Information.new 4 end
rails
1(html)※hamlを使用 2 = form_with @information, url: {controller: 'informations', action: 'create' } do |form| 3 = form.text_area :content 4 = form.submit
試したこと
①@informationが生成されていないのではないか?
newアクション内で「binding.pry」を実行
@informationには全てのカラムがnillの状態で生成されていることが確認できた
5: def new 6: @information = Information.new => 7: binding.pry 8: end [1] pry(#<InformationsController>)> @information => #<Information:0x00007ff4d792f378 id: nil, content: nil, created_at: nil, updated_at: nil>
②form_withの記述が間違っているのでは?
pikawaka「【Rails】form_withの使い方を徹底解説!」を参考。
コントローラ名や変数名、カラム名に誤りはない
③コントローラからviewに変数を渡すことができていないのでは?
テーブルにレコードを直接保存し、同コントローラのnewアクション内でfindメソッドを使用し取り出しを行う。
その後viewファイルで受け取った変数を表示する記述をすると正確に値が表示される
(controller) def new @information = Information.find(1) end (view)※hamlを使用 = @information.content
補足情報(FW/ツールのバージョンなど)
railsのバージョン: Rails 5.2.4.3
気になる点
今回の処理を実装する前にモデル、テーブル名に誤りがあったため
一度モデル、テーブルを削除し、再び作成しています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 14:22