前提・実現したいこと
投稿機能を実装しようとしています。
現在、記事投稿アプリを作成しているのですが、
今まで出来ていたのに、突然、投稿を実施してもデータベースに保存されなくなってしまいました。
特にエラー画面も出るわけではなく、
投稿の実行後、リダイレクトだけ行われ、トップページに移行します。
(しかしデータは保存されていない)
発生している問題・エラーメッセージ
posts_controller.rb
class PostsController < ApplicationController protect_from_forgery def index @posts = Post.all.page(params[:page]).per(6) end def new @post = Post.new end def create Post.create(post_params) redirect_to root_path end def edit @post = Post.find(params[:id]) end def update post = Post.find(params[:id]) post.update(post_params) redirect_to post_path(post.id) end def show @post = Post.find(params[:id]) end def destroy post = Post.find(params[:id]) post.destroy redirect_to root_path end private def post_params params.permit(:title, :image, :content, :partner).merge(user_id: current_user.id) end end
new.html.haml(新規投稿ページ)
<body> <div class="container"> <%= form_with model: @post, local: true do |form| %> <form action="http://localhost:3000/posts/create" method="post"> <div class="form-group"> <label for="partner">パートナー名</label> <%=form.text_field :partner, placeholder: :パートナー名, class: :form__partner %> </div> <div class="form-group"> <label for="title">タイトル</label> <%= form.text_field :title, placeholder: :タイトル, class: :form__title %> </div> <div class="form-group"> <%= form.label :image, 'プロフィール画像' %> <%= form.file_field :image %> </div> <div class="form-group h-200"> <%= form.text_area :content, placeholder: :コメント, class: :form__text %> <label for="content">コメント</label> </div> <% form.submit %> <button type="submit" class="btn btn-success"> 送信する </button> <% end %> </form> </div> </body>
###routes.rb
Rails.application.routes.draw do devise_for :users root to: 'posts#index' resources :posts, only: [:index, :new, :create, :show, :edit, :update, :destroy] end
index.html.haml(トップページ)
<div container> <div class="row mx-2"> <% @posts.each do |post| %> <div class="col-4 mb-4"> <div class="card img-thumbnail"> <%= post.image %> <div class="card-body px-2 py-3"> <h5 class="card-title"><%= link_to post.title, post_path(post.id), class: "content__right__top--title" %></h5> <p class="card-text"><%= post.content%></p> <p class="mb-0"><%=link_to "のぞいてみる", post_path(post.id), class: "btn btn-success btn-sm"%> </div> </div> </div> <% end %> </div>
post.rb(モデル)
class Post < ApplicationRecord validates :title, :content, presence: true belongs_to :user end
試したこと
bindin.pryでの実行状況の確認。
→createアクションは動いているようで、paramsの中にもデータが格納されていました。
モデルが上手く動いてないのかもしれないと思い、念のため、db:migrateも行いました。
補足情報(FW/ツールのバージョンなど)
恥ずかしながら、エラーが出なかった時にヒントがなく、対処に困ってしまうことが多いです。
何か参考になるページなどあればぜひ、教えて頂きたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/23 06:00
2020/04/18 04:21