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

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

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

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

Ruby on Rails

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

2220閲覧

uninitialized constant Item::DeliveryFee を解決したい。

Solt24times

総合スコア32

Ruby

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

Ruby on Rails

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

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/12/02 02:29

前提・実現したいこと

フリマアプリを作成中です。
商品投稿をする際に必要な情報を入力、送信したのですが表題の通りのエラーが出てしまい先に進めない状態です。

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

def create @item = Item.new(item_params) if @item.save←エラー箇所として上がっている場所 redirect_to root_path else render :new

該当のソースコード

items.controller

Ruby

1class ItemsController < ApplicationController 2 before_action :authenticate_user!, except: [:show, :index] 3 4 def index 5 end 6 7 def new 8 @item = Item.new 9 end 10 11 def create 12 @item = Item.new(item_params) 13 if @item.save 14 redirect_to root_path 15 else 16 render :new 17 end 18 end 19 20 private 21 def item_params 22 params.require(:item).permit(:image, :item_name, :price, :item_text, :category_id, :status_id, :delivery_fee_id, :prefectures_id, :shipping_date_id, :user) 23 end 24 25 26end

app/model/item.rb

ruby

1class Item < ApplicationRecord 2 extend ActiveHash::Associations::ActiveRecordExtensions 3 4 belongs_to :category 5 belongs_to :delivery_fee 6 belongs_to :prefectures 7 belongs_to :shipping_date 8 belongs_to :status 9 has_one_attached :image 10 11 validates :item_name, :item_text, :price, :user, presence: true 12 validates :category_id, :status_id, :delivery_fee_id, :prefectures_id, :shipping_date_id, numericality: { other_than: 1, message: "can't be balnk"} 13 14end 15

app/model/delivery_fee.rb

class Delivery_fee < ActiveHash::Base self.data = [ { id: 1, name: '--' }, { id: 2, name: '着払い(購入者負担)' }, { id: 3, name: '送料込み(出品者負担)' }, ] include ActiveHash::Associations has_many :items end

new.html.erb

ruby

1<div class="items-sell-contents"> 2 <header class="items-sell-header"> 3 <%= link_to image_tag('furima-logo-color.png' , size: '185x50'), "/" %> 4 5 </header> 6 <div class="items-sell-main"> 7 <h2 class="items-sell-title">商品の情報を入力</h2> 8 <%= form_with model: @item, url: items_path, local: true do |f| %> 9 10 <%= render 'shared/error_messages', model: f.object %> 11 12 <%# 商品画像 %> 13 <div class="img-upload"> 14 <div class="weight-bold-text"> 15 商品画像 16 <span class="indispensable">必須</span> 17 </div> 18 <div class="click-upload"> 19 <p> 20 クリックしてファイルをアップロード 21 </p> 22 <%= f.file_field :image, id:"item-image" %> 23 </div> 24 </div> 25 <%# /商品画像 %> 26 <%# 商品名と商品説明 %> 27 <div class="new-items"> 28 <div class="weight-bold-text"> 29 商品名 30 <span class="indispensable">必須</span> 31 </div> 32 <%= f.text_area :item_name, class:"items-text", id:"item-name", placeholder:"商品名(必須 40文字まで)", maxlength:"40" %> 33 <div class="items-explain"> 34 <div class="weight-bold-text"> 35 商品の説明 36 <span class="indispensable">必須</span> 37 </div> 38 <%= f.text_area :item_text, class:"items-text", id:"item-info", placeholder:"商品の説明(必須 1,000文字まで)(色、素材、重さ、定価、注意点など)例)2010年頃に1万円で購入したジャケットです。ライトグレーで傷はありません。あわせやすいのでおすすめです。" ,rows:"7" ,maxlength:"1000" %> 39 </div> 40 </div> 41 <%# /商品名と商品説明 %> 42 43 <%# 商品の詳細 %> 44 <div class="items-detail"> 45 <div class="weight-bold-text">商品の詳細</div> 46 <div class="form"> 47 <div class="weight-bold-text"> 48 カテゴリー 49 <span class="indispensable">必須</span> 50 </div> 51 <%= f.collection_select(:category_id, Category.all, :id, :name, {}, {class:"select-box", id:"item-category"}) %> 52 <div class="weight-bold-text"> 53 商品の状態 54 <span class="indispensable">必須</span> 55 </div> 56 <%= f.collection_select(:status_id, Status.all, :id, :name, {}, {class:"select-box", id:"item-sales-status"}) %> 57 </div> 58 </div> 59 <%# /商品の詳細 %> 60 61 <%# 配送について %> 62 <div class="items-detail"> 63 <div class="weight-bold-text question-text"> 64 <span>配送について</span> 65 <a class="question" href="#">?</a> 66 </div> 67 <div class="form"> 68 <div class="weight-bold-text"> 69 配送料の負担 70 <span class="indispensable">必須</span> 71 </div> 72 <%= f.collection_select(:delivery_fee_id, Delivery_fee.all, :id, :name, {}, {class:"select-box", id:"item-shipping-fee-status"}) %> 73 <div class="weight-bold-text"> 74 発送元の地域 75 <span class="indispensable">必須</span> 76 </div> 77 <%= f.collection_select(:prefectures_id, Prefectures.all, :id, :name, {}, {class:"select-box", id:"item-prefecture"}) %> 78 <div class="weight-bold-text"> 79 発送までの日数 80 <span class="indispensable">必須</span> 81 </div> 82 <%= f.collection_select(:shipping_date_id, Shipping_date.all, :id, :name, {}, {class:"select-box", id:"item-scheduled-delivery"}) %> 83 </div> 84 </div> 85 <%# /配送について %> 86 87 <%# 販売価格 %> 88 <div class="sell-price"> 89 <div class="weight-bold-text question-text"> 90 <span>販売価格<br>(¥3009,999,999)</span> 91 <a class="question" href="#">?</a> 92 </div> 93 <div> 94 <div class="price-content"> 95 <div class="price-text"> 96 <span>価格</span> 97 <span class="indispensable">必須</span> 98 </div> 99 <span class="sell-yen">¥</span> 100 <%= f.text_field :price, class:"price-input", id:"item-price", placeholder:"例)300" %> 101 </div> 102 <div class="price-content"> 103 <span>販売手数料 (10%)</span> 104 <span> 105 <span id='add-tax-price'></span>円 106 </span> 107 </div> 108 <div class="price-content"> 109 <span>販売利益</span> 110 <span> 111 <span id='profit'></span>円 112 </div> 113 </span> 114 </div> 115 </div> 116 <%# /販売価格 %> 117 118 <%# 注意書き %> 119 <div class="caution"> 120 <p class="sentence"> 121 <a href="#">禁止されている出品、</a> 122 <a href="#">行為</a> 123 を必ずご確認ください。 124 </p> 125 <p class="sentence"> 126 またブランド品でシリアルナンバー等がある場合はご記載ください。 127 <a href="#">偽ブランドの販売</a> 128 は犯罪であり処罰される可能性があります。 129 </p> 130 <p class="sentence"> 131 また、出品をもちまして 132 <a href="#">加盟店規約</a> 133 に同意したことになります。 134 </p> 135 </div> 136 <%# /注意書き %> 137 <%# 下部ボタン %> 138 <div class="sell-btn-contents"> 139 <%= f.submit "出品する" ,class:"sell-btn" %> 140 <%=link_to 'もどる', root_path, class:"back-btn" %> 141 </div> 142 <%# /下部ボタン %> 143 </div> 144 <% end %> 145 146 <footer class="items-sell-footer"> 147 <ul class="menu"> 148 <li><a href="#">プライバシーポリシー</a></li> 149 <li><a href="#">フリマ利用規約</a></li> 150 <li><a href="#">特定商取引に関する表記</a></li> 151 </ul> 152 <%= link_to image_tag('furima-logo-color.png' , size: '185x50'), "/" %> 153 <p class="inc"> 154 ©︎Furima,Inc. 155 </p> 156 </footer> 157</div>

マイグレーションファイル

class CreateItems < ActiveRecord::Migration[6.0] def change create_table :items do |t| t.string :item_name, null: false t.integer :price, null: false t.text :item_text, null:false t.integer :category_id, null: false t.integer :status_id, null: false t.integer :delivery_fee_id, null: false t.integer :prefectures_id, null: false t.integer :shipping_date_id, null: false t.references :user, null: false, foreign_key: true t.timestamps end end end

試したこと

エラー分からファイル名の違いがあると思いdeliver_feeに関するファイル及びコードは一通り確認しましたがスペルミスなどもないように見えます。
他に何が原因なのかが思いつかず動けない状態です。

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

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

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

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

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

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

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

guest

回答1

0

自己解決

自己解決しました。
modelの命名規則に則った書き方をしなかった為、対象ファイルが読めない状態だったようです。
参考にした記事:https://qiita.com/gakkie/items/3afcd505c786364aa5fa

投稿2021/12/02 04:34

Solt24times

総合スコア32

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問