前提・実現したいこと
ここに質問の内容を詳しく書いてください。
railsを用い、編集機能をもつブログに似たアプリを作成しておりますが、そこで少し問題が発生しました。
新規投稿文の作成の際は問題なく投稿が反映されるのですが、その投稿の編集を行うとその投稿が反映されず、
エラーメッセージが発生しました。
発生している問題・エラーメッセージ
param is missing or the value is empty: posts
該当のソースコード
def post_params params.require(:posts).permit(:title,:body) end
試したこと
上記ソースコードに何か問題があるのかと思っていたのですが、
新規投稿時の
※createアクションに繋がるhtml.erb <%= form_for :posts ,url:posts_path do |f| %> <p> <%=f.text_field :title, placeholder: "enter title"%> </p> <%if @post.errors.messages[:title].any?%> <span class="error"><%=@post.errors.messages[:title][0]%></span> <%end%> <p> <%=f.text_area :body ,placeholder: "enter text"%> </p> <%if @post.errors.messages[:body].any?%> <span class="error"><%=@post.errors.messages[:body][0]%></span> <%end%> <p> <%=f.submit%> </p> <%end%> ※コントローラー側 def create @post = Post.new(post_params) if @post.save redirect_to posts_path else render "new" end end
createメソッドを実行する際は問題なくparamsで値を受け取り、リダイレクトしてくれているようなのですが、
編集時の
※uodateアクションに繋がるhtml.erb <%= form_for @post ,url:post_path(@post)do |f| %> <p> <%=f.text_field :title, placeholder: "enter title"%> </p> <%if @post.errors.messages[:title].any?%> <span class="error"><%=@post.errors.messages[:title][0]%></span> <%end%> <p> <%=f.text_area :body ,placeholder: "enter text"%> </p> <%if @post.errors.messages[:body].any?%> <span class="error"><%=@post.errors.messages[:body][0]%></span> <%end%> <p> <%=f.submit%> </p> <%end%> ※コントローラ側 def update @post = Post.find(params[:id]) if @post.update(post_params) redirect_to posts_path else render "edit" end end
こちらではうまくいず、上記のエラーコードが出てしまいます。
恐らくform forの設定の何処かで見落としがあるかと思うのですが、初学者につきどこが該当の部分か特定できずにいます。お力添えよろしくお願いします。
補足情報(FW/ツールのバージョンなど)
rails 5.2.3 ruby2.6.3
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/06 12:08