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

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

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

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

1回答

2009閲覧

rails5 nested-form 子の情報が保存されない

yu_yu

総合スコア7

Ruby

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

Ruby on Rails

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/05/13 13:08

編集2020/05/13 15:10

「nested-form」を使い子テーブルの情報を保存したいのですがうまく保存されません。分かる方いましたらよろしくお願いします。
Rails ver は5.0.7.2です。

親:User テーブル (company,userid,pass,memo)
子:Schedule テーブル (time,user_id,category_id)
Category テーブル (category)

ruby

1#_form.html.erb 2 3 4<%= nested_form_for(@user) do |f| %> 5 6 <div class="field"> 7 <%= f.label "企業名" %> 8 <%= f.text_field :company,class:"form-control",placeholder:"企業名" %> 9 </div> 10 11 <div class="field"> 12 <%= f.label "ユーザーID" %> 13 <%= f.text_field :userid,class:"form-control",placeholder:"ユーザーID" %> 14 </div> 15 16 <div class="field"> 17 <%= f.label "パスワード" %> 18 <%= f.text_field :pass,class:"form-control",placeholder:"パスワード" %> 19 </div> 20 21 <div class="field"> 22 <%= f.label "メモ" %> 23 <%= f.text_field :memo,class:"form-control",placeholder:"メモ" %> 24 </div> 25 26 27 28 <%= f.fields_for :schedules do |f| %> 29 <hr class=hr-tag> 30 <div class="field"> 31 <%= f.collection_select :category_id, @category, :id, :name,{:prompt => "予定を選択"},class:"form-control",id:"select-form"%> 32 <%= f.text_field :time, class:"form-control",placeholder:"日時"%> 33 </div> 34 <div class="buttons"> 35 <%= f.link_to_remove do%> 36 <span class="glyphicon glyphicon-trash color-blue"></span> 37 </div> 38 39 <% end %> 40 <% end %> 41 42 43 <%= f.link_to_add "予定の追加", :schedules ,class:"button-4-1"%> 44 <%= f.submit "作成",class:"button-4-1"%> 45 46 47 48<% end %>

ruby

1#users_controller.rb 2 3 # GET /users 4 # GET /users.json 5 def index 6 @users = User.all 7 @schedules=Schedule.all 8 end 9 10 # GET /users/1 11 # GET /users/1.json 12 def show 13 end 14 15 # GET /users/new 16 def new 17 @user = User.new 18 @schedule=@user.schedules.build 19 @category=Category.all 20 end 21 22 # GET /users/1/edit 23 def edit 24 end 25 26 # POST /users 27 # POST /users.json 28 def create 29 @user = User.new(user_params) 30 31 respond_to do |format| 32 if @user.save 33 format.html { redirect_to @user, notice: 'User was successfully created.' } 34 format.json { render :show, status: :created, location: @user } 35 else 36 format.html { render :new } 37 format.json { render json: @user.errors, status: :unprocessable_entity } 38 end 39 end 40 end 41 42 # PATCH/PUT /users/1 43 # PATCH/PUT /users/1.json 44 def update 45 respond_to do |format| 46 if @user.update(user_params) 47 format.html { redirect_to @user, notice: 'User was successfully updated.' } 48 format.json { render :show, status: :ok, location: @user } 49 else 50 format.html { render :edit } 51 format.json { render json: @user.errors, status: :unprocessable_entity } 52 end 53 end 54 end 55 56 # DELETE /users/1 57 # DELETE /users/1.json 58 def destroy 59 @user.destroy 60 respond_to do |format| 61 format.html { redirect_to users_url, notice: 'User was successfully destroyed.' } 62 format.json { head :no_content } 63 end 64 end 65 66 private 67 # Use callbacks to share common setup or constraints between actions. 68 def set_user 69 @user = User.find(params[:id]) 70 end 71 72 # Only allow a list of trusted parameters through. 73 def user_params 74 params.require(:user).permit(:company, :userid, :pass, :memo,users_ttributes: [:id, :time, :user_id, :category_id,:_destroy ] ) 75 end 76end 77

イメージ説明

ruby

1#user.rb 2class User < ApplicationRecord 3 has_many :schedules, dependent: :destroy 4 accepts_nested_attributes_for :schedules, allow_destroy: true 5end 6

ruby

1#schedule.rb 2class Schedule < ApplicationRecord 3 belongs_to :user 4end

ruby

1#category.rb 2class Category < ApplicationRecord 3end 4

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

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

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

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

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

guest

回答1

0

user_paramsメソッドのpermit内のハッシュですがusers_ttributesではなくusers_attributesではありませんか?

投稿2020/05/13 14:52

haneru

総合スコア440

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

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

yu_yu

2020/05/13 15:01

回答ありがとうございます! ご指摘の箇所スペルミスしていました。 スペルを修正後にデータを作成後、consoleで確認をしてみたのですが保存できていませんでした。 他にも怪しい箇所があればご指摘お願いします。
haneru

2020/05/13 15:07

念のため、モデルのソースコードも見せて頂いてもよろしいでしょうか?
yu_yu

2020/05/13 15:11

モデルのソースコード追記しました! seeds.rb でサンプルとして用意したものは表示することができ、しっかりアソシエーションできていました。
haneru

2020/05/13 15:20

`user.rb`に`attr_accessor :users_attributes`を加えてみてください。
yu_yu

2020/05/13 15:32

加えてみましたが保存できませんでした。Userテーブルの情報のみ保存されるという感じです。
haneru

2020/05/13 15:37

`create`アクションに`raise`を追加して、そこで`params`と`user_params`の値を取得して質問部分に追加していただけますか?
yu_yu

2020/05/13 15:49

プログラミング経験が浅く、`raise`を使ったことがないのですがどのように加えていけばいいでしょうか。 質問ばかりで申し訳ございません。
yu_yu

2020/05/14 09:45

`users_attributes`ではなく`schedules_attributes`が正しかったかもしれません。 しかし変更してみた所、作成ボタンを押した際にロールバックされてしまうようになりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問