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

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

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

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

HTML

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

Q&A

0回答

162閲覧

子モデルを通して親モデルの情報をデータベースに登録したい。

hiromats

総合スコア17

Ruby on Rails

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

HTML

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

0グッド

0クリップ

投稿2018/12/04 02:49

rubyとhtmlを使用して機能の実装を行なっています。

big_categoryが親、itemが子にあたります。そして、それとは別に、itemが親、item_imageは子にあたります。
コントローラーはitemコントローラーを中心にしており、item_imageはitemの子なので、attributesメソッドを用いてデータベースへの保存が出来るのですが、big_categoryはitemの親にあたるので、item_imageのようにDBへの保存が出来ない状態です。

new.html.erb内の、f.labelのカテゴリーと商品の状態で、商品の状態(condition)はitemテーブル内のカラムなので、これも保存出来ますが、カテゴリー(big_category)は当然保存できません。

どうすれば、子モデルであるitem通して親モデルであるbig_categoryをデータベースに保存出来るのか、ご教授いただければ幸いです。

よろしくお願いします。

new.html.erb

html

1<body class=""> 2 <%= form_for @item do |f| %> 3 <main class="single-main"> 4 <section class="l-single-container buy-item-container"> 5 <div data-reactroot=""> 6 <div class="sell-container-inner"> 7 <h2 class="l-single-head">商品の情報を入力</h2> 8 <form class="sell-form"> 9 <div class="sell-upload-box"> 10 <h3 class="sell-upload-head">出品画像 11 <span class="form-require">必須</span> 12 </h3> 13 <p>最大4枚までアップロードできます</p> 14 <div class="sell-dropbox-container clearfix"> 15 <div class="sell-upload-items have-item", id="items"> 16 <ul id="item"> 17 <li class="sell-upload-item"> 18 <div class="sell-upload-item-1"> 19 <figure class="sell-upload-figure figure-1"> 20 <img> 21 <pre class="visible-pc-1">ドラッグアンド<br>ドロップ<br>またはクリックして<br>ファイルを<br>アップロード</pre> 22 <%= f.file_field :image, required: true, name: "item[item_images_attributes][0][image]", id: "item_item_images_attributes_0_image" %> 23 <%= f.hidden_field :status, value: "0", name: "item[item_images_attributes][0][status]", id: "item_item_images_attributes_0_status" %> 24 </figure> 25 </div> 26 </li> 27 </ul> 28 </div> 29 </div> 30 </div> 31 <div class="sell-content clearfix"> 32 <h3 class="sell-sub-head">商品の詳細</h3> 33 <div class="sell-form-box"> 34 <div class="form-group"> 35 <%= f.label :カテゴリー %> 36 <span class="form-require">必須</span> 37 <div> 38 <div class="select-wrap"> 39 <%= f.select :big_category, ["レディース", "メンズ"], {prompt: '---'}, {class: "select-default"} %> 40 <%= fa_icon "angle-down" %> 41 </div> 42 </div> 43 </div> 44 <div class="form-group"> 45 <%= f.label :商品の状態 %> 46 <span class="form-require">必須</span> 47 <div class="select-wrap"> 48 <%= f.select :condition, ["新品、未使用", "未使用に近い", "目立った傷や汚れなし", "やや傷や汚れあり", "傷や汚れあり", "全体的に状態が悪い"], {prompt: '---'}, { class: "select-default"} %> 49 <%= fa_icon "angle-down" %> 50 </div> 51 </div> 52 </div> 53 </div> 54 <div class="sell-content sell-btn-box"> 55 <%= f.submit :出品する, class: "btn-default btn-red" %> 56 <%= f.hidden_field :status, value: "1" %> 57 <a href="/" class="btn-default btn-gray">もどる</a> 58 </div> 59 </form> 60 <div class="overlay"></div> 61 </div> 62 </div> 63 </section> 64 </main> 65 <% end %> 66</body>

items_controller.rb

class ItemsController < ApplicationController def index @items = Item.order("created_at DESC").page(params[:page]).per(20) end def new @item = Item.new @item.item_images.build @item.big_categories_build end def create @item = Item.new(item_params) if @item.save redirect_to :root else render :new end end private def item_params params.require(:item).permit( :condition, :big_category_id, item_images_attributes: [:image, :status], big_categories_attributes: [:name] ) end end

Item.rb

class Item < ApplicationRecord has_many :item_images, dependent: :destroy belongs_to :big_category, optional:true accepts_nested_attributes_for :item_images, allow_destroy: true end

item_image.rb

class ItemImage < ApplicationRecord belongs_to :item mount_uploader :image, ItemImageUploader end

big_category.rb

class BigCategory < ApplicationRecord has_many :items, dependent: :destroy accepts_nested_attributes_for :items end

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問