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

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

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

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

Q&A

解決済

1回答

2674閲覧

form_forで投稿したデータがDBでNULLになってしまう

NN77

総合スコア59

Ruby on Rails 5

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

0グッド

0クリップ

投稿2019/02/08 03:23

編集2019/02/08 03:26

前提・実現したいこと

いつもお世話になります。
ユーザーがある施設を見学した感想の「メモ」を
フォームから登録する機能をform_forで作ろうとしています。

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

投稿操作はできるのですが、
投稿した結果DBを確認すると、そのデータがNULLで表示されており、
なぜデータが受け取れないのかの原因が自分で見つけられずにおりますorz
もし原因の想定がつく方がいらしゃいましたら、ご指摘願えないでしょうか。
何卒よろしくお願いいたします。

該当のソースコード

<routes.rb>(関連箇所のみ抜粋)

#お気に入りページ(ユーザーがメモを登録するページ) get 'users/:id/nurseries/:nursery_id' => 'likes#show', as: 'like' #メモ登録機能 post 'users/:id/nurseries/:nursery_id/memos' => 'memos#create', as: 'memo_create'

-以下お気に入りページ
(ユーザーがメモ登録するページ)のコントローラーとviewのコードです
<like_controller.rb>

def show @like = Like.find_by(nursery_id: like_params[:nursery_id], user_id: params[:id]) @memo = Memo.new end

<likes/show.html.erb>

<% if current_user %> <%= form_for @memo, url: memo_create_path do |f| %> <h4>メモ </h4> <%= f.text_field :memo, :placeholder => "良い景色だった", :size=>"100" %>   <%= f.submit '送信'%> <% end %>

-以下memoをクリエイトするmemos_controllerのコードです
<memos_controller.rb>

def create @memo = Memo.create(memo: memo_params[:memo], nursery_id: memo_params[:nursery_id], user_id: current_user.id) end private def memo_params params.permit(:nursery_id, :memo) end end

試したこと

binding.pryを
createアクションの前に書いてみたところ、
以下の通りmemoはやはり取得できておりませんでした。ただその原因が自分でつきとめられずにおります。

pry(#<MemosController>)> memo_params
Unpermitted parameters: :utf8, :authenticity_token, :memo, :commit, :id
=> <ActionController::Parameters {"nursery_id"=>"1"} permitted: true>

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

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

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

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

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

guest

回答1

0

ベストアンサー

form_forの中でf.text_fieldを使うと、nameはモデル名も入ったmemo[memo]のようになります。これはparams[:memo][:memo]に来て、params[:memo]では受け取れません。

「HTMLを確認する」「処理前のparamsを見てみる」「開発ツールで、HTTP通信で送信された内容を確認する」のいずれかで、実際のキーが確認できます。

投稿2019/02/08 04:21

maisumakun

総合スコア145183

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

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

NN77

2019/02/08 04:54

ありがとうございます。おかげで修正できました。 今後フォームで値が得られないときはご回答いただいた確認方法を試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問