記事投稿機能の実装をおこっなっています。form_withメソッドを使用し情報を渡そうとしています。下記のコードは、posts/new.html.hamlファイルとposts_controller.rbファイルを添付しました。
posts/new.html.haml
= render partial: 'shared/header' %body .container .row .col-md-8.col-md-offset-2 %h2 ブログ記事投稿・編集 = form_with url: posts_path,model: article,method: "POST",local: true, do |f| .form-date.form-group .blog-name %label.blog-label 日付 = f.date_field :dating, class: "input-time", name: "post_date", size: "20", placeholder: "日付を入力してください", style: "font-weight: bold;" .form-title.form-group .blog-name %label.blog-label タイトル = f.text_field :title, class: "input-title", name: "title", placeholder:"タイトルを入力してください。", style: "font-weight: bold;" .form-letter.form-group .blog-name %label.blog-label 本文 = f.text_area :text, class: "input-control", rows: "15", name: "body", placeholder: "本文を入力してください。", style: "font-weight: bold;" .form-input = f.submit class: "btn btn-primary btn-sm", value: "投稿する"
posts_controller.rb
class PostsController < ApplicationController def new @article = Article.new(blogs_params) # インスタンスに保存成功した場合の処理 if @article.save flash[:success] = "ユーザーを登録しました" redirect_to "/posts/new" # インスタンスの保存に失敗した場合の処理 else flash[:danger] = "ユーザーの登録に失敗しました" render :new end end def create # ストロングパラメータから精査されたデータだけをインスタンスに格納 @article = Article.new # インスタンスに保存成功した場合の処理 if @article.save flash[:success] ="ユーザーを登録しました" redirect_to "/post/new" # インスタンスの保存に失敗した場合の処理 else flash[:danger] = "ユーザーの登録に失敗しました" render :new end end private def blogs_params params.permit(:dating, :title, :text) end end
どなたか、問題点や解決案・ご教授どうかお願いします!
作っているアプリは、現状、posts以外にもコントローラーがありますか?それともまだpostsだけですか?
返信ありがとうございます!
他に、top_controllerがあります。
なぜ「PostsControllerでArticleを扱う」という構造がそのままなのでしょうか?
すみません、どこのことでしょうか?新しく、Articlesコントローラを作成しました。
https://gyazo.com/81e27b00f6b5b0b800917edae8331b65
https://gyazo.com/42ce9c65935a2e2fa7444fed6b606c78
一応、このように作成しました。確認お願いします!
> 新しく、Articlesコントローラを作成しました。
でしたら、質問のコードもそれに合わせて直してください。
わかりました!申し訳ございません。