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

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

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

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1601閲覧

投稿機能を実装出来なくて困っています。

fillip09

総合スコア11

Ruby on Rails

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/03/21 13:55

前提・実現したいこと

投稿機能を実装しようとしています。

現在、記事投稿アプリを作成しているのですが、
今まで出来ていたのに、突然、投稿を実施してもデータベースに保存されなくなってしまいました。

特にエラー画面も出るわけではなく、
投稿の実行後、リダイレクトだけ行われ、トップページに移行します。
(しかしデータは保存されていない)

発生している問題・エラーメッセージ

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/ツールのバージョンなど)

恥ずかしながら、エラーが出なかった時にヒントがなく、対処に困ってしまうことが多いです。
何か参考になるページなどあればぜひ、教えて頂きたいです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

以下の部分だけ直してみてはいかがでしょう?

erb

1# 質問文掲載のコード 2<%= form_with model: @post, local: true do |form| %> 3 <form action="http://localhost:3000/posts/create" method="post"> 4 5 <%# 省略 %> 6 7 <% end %> 8</form> 9 10# 修正後 11<%= form_with model: @post, method: :post, local: true do |form| %> 12 13 <%# 省略 %> 14 15<% end %>

<form action="http://localhost:3000/posts/create" method="post">は、form_with メソッドが生成してくれるので要らないはず。
あと、method: :postform_with の引数に渡さないといけないです


補足

念のため確認ですが、拡張子は haml じゃなくて erb ですよね....

投稿2020/03/22 02:29

編集2020/03/22 02:31
siruku6

総合スコア1382

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

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

fillip09

2020/03/23 06:00

ご回答ありがとうございます! 参考にさせて頂きたのですが、解決出来ませんでした、、、 もし他にヒントとなるようなものがあれば、ご連絡よろしくお願い申し上げます。
siruku6

2020/04/18 04:21

解決しなかった場合は、修正した後のソースと実行結果(特にエラー内容)を質問文に追記するとよいと思います。 具体的な情報があればあるほど回答しやすくなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問