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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Q&A

0回答

582閲覧

Rails データの保存ができない

potepote_potte

総合スコア0

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/05/14 09:22

前提・実現したいこと

rails初学者です。
railsでtodoアプリを作成しているのですが、データが保存できず困っています。
todo(日程、カテゴリー、内容)を入力し追加ボタンを押すと以下のエラーが発生します。

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

エラーメッセージ NoMethodError in TasksController#create undefined method `write_from_user' for nil:NilClass

該当のソースコード

tasks_conttroller.rb

class TasksController < ApplicationController def index @task = Task.new @tasks = Task.all.order(id: "DESC") end def create @task = Task.new (task_params) @task.save redirect_to tasks_path end private def task_params params.require(:task).permit(:date, :tag, :text).merge(user_id: current_user.id) end end

main_todo.html.haml

.todo-main .todo-main__form = form_for @task do |f| .todo-main__from__sort__box .todo-main__from__sort__box__title = f.label :date, "日程" = f.datetime_field :date .todo-main__from__sort__box__title = f.label :tag, "カテゴリー" = f.select :tag, Task.tags.keys,{prompt: '選択してください'} .todo-main__from__sort__box__title = f.label :text, "内容" = f.text_field :text, placeholder: " ここにTO DO内容を入力してね!(20文字以内)",class:"todo-main__from__sort__box__title__textform" .todo-main__from__sort__box__title__submit-btn = f.submit 'TODOを追加する', class:'submit-btn'

task.rb

class Task < ApplicationRecord include ActiveModel::Model belongs_to :user enum tag:{"テスト1": 1,"テスト2": 2,"テスト3": 3,"テスト4": 4,"テスト5": 5,"テスト6": 6,} validates :date,:text,:tag, presence: true end

ルーティング

Rails.application.routes.draw do devise_for :users root "tasks#index" resources :tasks, only: [:index, :create, :update] end

試したこと

エラー文の内容から@taskの中身が空の為、起きたエラーなのかと思ったため
binding.pryで内容を確認したろころ
paramsには
"task"=>{"date"=>"2020-05-20T00:00", "tag"=>"テスト1", "text"=>"aaa"}
とデータが入っていましたが
@taskは
id: nil, date: nil, tag: nil, text: nil, user_id: nil, created_at: nil, updated_at: nil
と中身がnilになっていました。

paramsには値が入っているのに@taskに入っておらず・・
ここからどのように対処したら良いか分からずこちらに質問させていただきました。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問