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

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

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

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

Q&A

解決済

1回答

1751閲覧

入力した内容をデータベースに保存したい

sumirow

総合スコア14

Ruby on Rails

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

0グッド

1クリップ

投稿2019/07/22 11:31

前提・実現したいこと

フォームに入力された内容をデータベースに保存したいです。
ここに質問の内容を詳しく書いてください。
railsでフォームに入力した内容を保存しないのですが保存がされません。
コントローラーにうまく値を渡せていないのだと思いますが、間違っている場所がわかりません。

該当のソースコード

ソースコード memos.contoroller.rb class MemosController < ApplicationController def create @post = Post.find(params[:post_id]) Memo.create(memo_params) redirect_to @post end private def memo_params params.require(:memo).permit(:content, :post_id) end end
ソースコード _form.html.haml = form_for [@post, @memo] do |f| .textarea = f.text_area :content,class:'textinput' .actions = f.submit"MEMO"

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

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

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

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

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

guest

回答1

0

ベストアンサー

Memoモデルにデータを保存したいということであれば、

def create
@post = Post.find(params[:post_id])
memo = Memo.create(memo_params)
memo.save
redirect_to @post
end

として保存出来ますよ!

上記でもエラーが出る場合は、エラー内容展開願います。

投稿2019/07/22 11:55

naoki10

総合スコア37

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

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

sumirow

2019/07/22 12:47

試してみましたが保存ができていないようです。 エラーは出ていません。
naoki10

2019/07/22 13:10

rails sなど実施しているようであれば、 ターミナルまたはコマンドプロンプトに表示されているlogを展開していただくと原因が分かるかもしれません! またはエラー画面が出ている場合、エラー画面展開、 または保存出来ていないのなら save! として出たエラー画面でもわかることがあるかもしれません! または保存ができていないことをどのように確認していますか? 推測ですが、 ・バリデーションエラー ・モデルが作成されていない ・post_idがpost出来ていない ・スペルミス などなど色々考えられることがあるので!
sumirow

2019/07/22 13:17

memoモデルにoptional: trueを追記したところ保存できるようになりました。 しかしpost_idが保存できていないのでpost_idがpostできていないということでしょうか?
naoki10

2019/07/22 13:50 編集

post_idが保存できていなかったのでしたら、 post_idがnilだったので保存出来ていなかったのだと思います。 post_idをpostするには-form~を表示するときの アクションの内容が現状分からないので何とも言えないのですが、 アクション(show? index?)に持たせて、 _form.html.h~に持ってくる必要があるかと思います!
sumirow

2019/07/23 11:25

showアクションはこのようになっています。 def show @post = Post.find(params[:id]) @memo = Memo.new @memos = @post.memos end @post = Post.find(params[:id])でpost_idを持たせているつもりですが、記述が間違っていますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問