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

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

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

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

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

Q&A

解決済

2回答

753閲覧

【Rails】ActionController::ParameterMissingが表示されデータが保存されない

Rvato

総合スコア6

Ruby on Rails 5

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

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

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

0グッド

0クリップ

投稿2020/09/03 12:54

編集2020/09/04 00:06

前提・実現したいこと

ポケモンのデータを1〜6匹入力し、パーティとして登録するアプリを作成中です。
データを入力しsubmitボタンを押下するとエラーが発生します。このエラーを解決したいです。

▼ 開発環境
Rails 5.2.4.3
Mac OS

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

param is missing or the value is empty: party

イメージ説明

該当のソースコード

(ところどころ作業中です…)
▼ PartiesController(対象エラー画像)

class PartiesController < ApplicationController def index end def new @party = Party.new @party.build_pokemon end def create @party = Party.new(party_params) if @party.save redirect_to root_path, notice: 'パーティを作成しました' else render :new end end def edit @party = Party.find(params[:id]) end def update @party = Party.find(params[:id]) end def destroy @party = Party.find(params[:id]) end private def party_params params.require(:party).permit( :party_id, :party_name, pokemons_attributes:[:pokemon_id, :name, :nickname, :gender, :ability, :nature, :item, :move1, :move2, :move3, :move4] ) end end
以下、関連ファイル

▼ PokemonsController

class PokemonsController < ApplicationController def new @pokemon = Pokemon.new end def create @pokemon = Pokemon.new(pokemon_params) end private def pokemon_params params.require(:pokemon).permit( :pokemon_id, :name, :nickname, :gender, :ability, :nature, :item, :move1, :move2, :move3, :move4, current_status_attributes:[:cs_hp, :cs_attack, :cs_defense, :cs_special_attack, :cs_special_defense, :cs_speed], base_status_attributes: [:bs_hp, :bs_attack, :bs_defense, :bs_special_attack, :bs_special_defense, :bs_speed], effort_value_attributes: [:ev_hp, :ev_attack, :ev_defense, :ev_special_attack, :ev_special_defense, :ev_speed] ) end end

▼ party.rb

class Party < ApplicationRecord has_many :pokemons accepts_nested_attributes_for :pokemons validates :party_name, presence: true end

▼ pokemon.rb

class Pokemon < ApplicationRecord has_one :current_status has_one :base_status has_one :effort_value belongs_to :party accepts_nested_attributes_for :current_status accepts_nested_attributes_for :base_status accepts_nested_attributes_for :effort_value end

▼ 対象のhtml.haml

= form_with model: @party, local: true, class: "party-register" do |f| .wrapper-party = render "shared/header" = render "shared/side-bar" = render "party" .party-name パーティ名 = text_field_tag :party_name, "", class: "party-name__input", maxlength: "6", type: "text" .register-btn .register-btn__text = f.submit "登録する", class: "register-btn__text__submit"

▼ DB

## pokemons table |Column |Type |Options | |-----------|----------|-----------| |pokemon_id |string |null: false| |name |string |null: false| |nickname |string | | |gender |string |null: false| |ability |string |null: false| |nature |string |null: false| |item |string | | |move1 |string |null: false| |move2 |string | | |move3 |string | | |move4 |string | | ### Association - has_one :current_status - has_one :base_status - has_one :effort_value - belongs_to :party ## parties table |Column |Type |Options | |-----------|----------|-----------| |party_id |string |null: false| |party_name |string |null: false| ### Association - has_many :pokemons ## current_statuses table |Column |Type |Options | |-------------------|----------|-----------| |cs_hp |string |null: false| |cs_attack |string |null: false| |cs_defense |string |null: false| |cs_special_attack |string |null: false| |cs_special_defense |string |null: false| |cs_speed |string |null: false| ### Association - has_one :pokemon, dependent: :destroy ## base_statuses table |Column |Type |Options | |-------------------|----------|-----------| |bs_hp |string |null: false| |bs_attack |string |null: false| |bs_defense |string |null: false| |bs_special_attack |string |null: false| |bs_special_defense |string |null: false| |bs_speed |string |null: false| ### Association - has_one :pokemon, dependent: :destroy ## effort_values table |Column |Type |Options | |-------------------|----------|-----------| |ev_hp |string | | |ev_attack |string | | |ev_defense |string | | |ev_special_attack |string | | |ev_special_defense |string | | |ev_speed |string | | ### Association - has_one :pokemon, dependent: :destroy ## markings table |Column |Type |Options | |-----------|-----------|-----------| |pokemon_id |references |foreign_key: true| ### Association - belongs_to :pokemon

補足情報

▼ 参考質問記事
https://teratail.com/questions/219234
https://qiita.com/hiroweb/items/74867433ab5091713521

▼ 仮説と検証作業の結果
accepts_nested_attributes_forを記述しモデルの関連レコードの登録・更新を可能にしています。
paramsの定義、privateメソッドに誤りはありますでしょうか。
何か気づきがありましたらご意見頂戴したいです。

追記 [2020.9.4]

▼ エラーに出るParameters
イメージ説明

▼_party.html.haml(冗長コードですが、とりあえず6回繰り返して記述しています)
文字数制限を超えてしまうので一部の画像とさせてください。追記依頼があれば承ります。
イメージ説明

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

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

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

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

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

winterboum

2020/09/03 15:09

viewから予想されるparamsと、貼ってある画像の一番下1.5行が一致しません。 viewを構成する全fileを載せることと、paramsが全部見えるようにしてください。 logにもでているのでそこからでもよいです。
Rvato

2020/09/04 00:08

追記・修正依頼、ありがとうございます。 エラー画像のparamsとviewを構成するファイル(一部)を追記しました。
guest

回答2

0

Railsで美しく行うには asmさんの方法です。
今のviewのままなんとか、、、というのでしたら
params.require(:pokemon).permit( でなく
params.permit(

投稿2020/09/04 00:14

winterboum

総合スコア23567

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

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

0

ベストアンサー

原因だけ述べてしまうとform_withから送信したデータをStrong Parameterで扱おうとした場合(params.requireを用いようとした場合)
text_field_tagではなくf.text_fieldを用いたほうが楽です。
そうでなければtext_field_tag "party[party_name]"などと記述する必要があり面倒です。

部分テンプレート内でも同様にフォームビルダを用いなければならず
ローカル変数fを渡す必要があります。

投稿2020/09/03 23:29

編集2020/09/03 23:33
asm

総合スコア15149

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

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

Rvato

2020/09/04 00:10

回答ありがとうございます。 > text_field_tagではなくf.text_fieldを用いたほうが楽です。 承知しました。f.text_fieldに修正してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問