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

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

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

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

Q&A

0回答

758閲覧

NoMethodError in ActionsController#create解決したいです!

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 6

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

0グッド

0クリップ

投稿2021/03/31 02:34

編集2021/04/01 03:47

前提・実現したいこと

ActiveHashを使ったシンプルな投稿アプリを作っています。
結論'投稿する'ボタンを押すとトップページに一覧を表示させたいのですが、
現在、全てのカテゴリーを選択した後に'投稿する'ボタンを押すとエラーが出てしまいます。

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

NoMethodError in ActionsController#create undefined method `permit' for "create":String Extracted source (around line #24): 22 23 def action_params 24 params.require(:action).permit(:active_id, :place_id, :set_time_id, 25 :description).merge(user_id: current_user.id) 26 end 27 end

該当のソースコード

models/action.rb

class Action < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions belongs_to_active_hash :active belongs_to_active_hash :place belongs_to_active_hash :set_time with_options numericality: { other_than: 0 } do validates :active_id validates :place_id validates :set_time_id end belongs_to :user end

該当のソースコード

models/active.rb

class Active < ActiveHash::Base self.data = [ {id: 0, name: '---'}, {id: 1, name: '読書'}, {id: 2, name: '筋トレ'}, {id: 3, name: 'ランニング'}, {id: 4, name: 'ウォーキング'}, {id: 5, name: 'プログラミング'}, {id: 6, name: '英会話'}, {id: 7, name: '勉強'}, {id: 8, name: '瞑想'}, {id: 9, name: '掃除'}, {id: 10, name: 'その他'} ] include ActiveHash::Associations has_many :actions end

該当のソースコード

models/place.rb

class Place < ActiveHash::Base self.data = [ {id: 0, name: '---'}, {id: 1, name: '自宅'}, {id: 2, name: '公園'}, {id: 3, name: 'ジム'}, {id: 4, name: '職場'}, {id: 5, name: '教室'}, {id: 6, name: 'カフェ'}, {id: 7, name: '図書館'}, {id: 8, name: '屋外'}, {id: 9, name: 'その他'} ] include ActiveHash::Associations has_many :actions end

該当のソースコード

models/routes.rb

Rails.application.routes.draw do devise_for :users root to: 'actions#index' resources :actions end

該当のソースコード

config/set_time.rb

class SetTime < ActiveHash::Base self.data = [ {id: 0, name: '---'}, {id: 1, name: '15分'}, {id: 2, name: '30分'}, {id: 3, name: '45分'}, {id: 4, name: '1時間00分'}, {id: 5, name: '1時間15分'}, {id: 6, name: '1時間30分'}, {id: 7, name: '1時間45分'}, {id: 8, name: '2時間00分'}, {id: 9, name: '2時間15分'}, {id: 10, name: '2時間30分'}, {id: 11, name: '2時間45分'}, {id: 12, name: '3時間00分'}, {id: 13, name: '3時間以上'} ] include ActiveHash::Associations has_many :actions end

該当のソースコード

actions_controller

class ActionsController < ApplicationController def index @actions = Action.all.order("created_at DESC") end def new @action = Action.new end def create @action = Action.new(action_params) if @action.save flash.notice = "投稿完了しました!" redirect_to root_path else render :new end end private def action_params params.require(:action).permit(:active_id, :place_id, :set_time_id, :description).merge(user_id: current_user.id) end end

該当のソースコード

views/actions/index.html.erb

<% @actions.each do |action| %> <div class="action"> <div class="action-active"> <%= action.active %> </div> <div class="action-place"> <%= action.place %> </div> <div class="action-time"> <%= action.set_time %> </div> <div class="action-description"> <%= action.description %> </div> <div class="action-date"> 投稿日時:<%= action.created_at %> </div> </div> <% end %>

views/actions/new.html.erb

<%= form_with model: @action, url: actions_path, local: true do |f| %> <div class="action-box"> <h2 class="action-plan">今日できたこと!!</h2> 何を? <%= f.collection_select(:active_id, Active.all, :id, :name, {}, {class:"active-select"}) %> どこで? <%= f.collection_select(:place_id, Place.all, :id, :name, {}, {class:"place-select"}) %> 何分? <%= f.collection_select(:set_time_id, SetTime.all, :id, :name, {}, {class:"set_time-select"}) %> メモ書き <%= f.text_area :description, class:"description", placeholder:"メモ" %> <%= f.submit "投稿する" ,class:"btn" %> </div> <% end %>

試したこと

記述ミスやparamsのところも確認したしましたが解決に至りませんでした。
初心者なのでいまいち構造が理解仕切れていない部分もありますが
お時間ある時にでも構いませんのでご教示お願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/03/31 09:57

かしこまりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問