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

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

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

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

Q&A

解決済

1回答

548閲覧

renderでデプロイ時に発生したNameErrorを解決したい

kahoxx121u

総合スコア1

Ruby on Rails 5

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

0グッド

0クリップ

投稿2023/01/31 12:32

デプロイ時のNameErrorを解決したい

デプロイ時に以下のようなNameErrorが発生しました。activhashにてうまく読み込めていないと思われるので、categoryの記載している箇所を確認しましたが答えが見つかりません。解決方法をご教示ください。
categoryを記載した箇所は、モデル、マイグレーション、showとnewファイル、コントローラーのパラムスです。初歩的な質問で申し訳ございませんが、よろしくお願いいたします。

以下デプロイ時のrenderのエラー画面

! Unable to load application: NameError: uninitialized constant ActiveHash Jan 31 01:14:37 AM bundler: failed to load command: puma (/opt/render/project/.gems/bin/puma) Jan 31 01:14:37 AM /opt/render/project/src/app/models/category.rb:1:in `<main>': uninitialized constant ActiveHash (NameError) opt/render/project/rubies/ruby-2.6.5/lib/ruby/2.6.0/net/protocol.rb:66: warning: already initialized constant Net::ProtocRetryError from /opt/render/project/rubies/ruby-2.6.5/lib/ruby/site_ruby/2.6.0/bundler/friendly_errors.rb:120:in `with_friendly_errors'
class Category < ActiveHash::Base self.data = [ { id: 1, category: '---' }, { id: 2, category: 'メンズ' }, { id: 3, category: 'レディース' }, { id: 4, category: 'ベビー・キッズ' }, { id: 5, category: 'インテリア・住まい・小物' }, { id: 6, category: '本・音楽・ゲーム' }, { id: 7, category: 'おもちゃ・ホビー・グッズ' }, { id: 8, category: '家電・スマホ・カメラ' }, { id: 9, category: 'スポーツ・レジャー' }, { id: 10, category: 'ハンドメイド' }, { id: 11, category: 'その他' }, ] include ActiveHash::Associations has_many :items end
<%# 商品の詳細 %> <div class="items-detail"> <div class="weight-bold-text">商品の詳細</div> <div class="form"> <div class="weight-bold-text"> カテゴリー <span class="indispensable">必須</span> </div> <%= f.collection_select(:category_id, Category.all, :id, :category, {}, {class:"select-box", id:"item-category"}) %> <div class="weight-bold-text"> 商品の状態 <span class="indispensable">必須</span> </div> <%= f.collection_select(:condition_id, Condition.all, :id, :condition, {}, {class:"select-box", id:"item-sales-status"}) %> </div> </div> <%# /商品の詳細 %>
<div class="item-explain-box"> <span><%= @item.text %></span> </div> <table class="detail-table"> <tbody> <tr> <th class="detail-item">出品者</th> <td class="detail-value"><%= @item.user.nickname %></td> </tr> <tr> <th class="detail-item">カテゴリー</th> <td class="detail-value"><%= @item.category.category %></td> </tr> <tr>
class ItemsController < ApplicationController before_action :authenticate_user!, except: [:index,:show] before_action :set_item, only: [:show, :edit, :update, :destroy] def index @items = Item.includes(:user).order("created_at DESC") end def new @item = Item.new end def create @item = Item.new(item_params) if @item.save redirect_to root_path else render :new end end def show end def edit if current_user.id == @item.user_id && @item.order.nil? else redirect_to root_path end end def update if @item.update(item_params) redirect_to item_path(item_params) else render :edit end end def destroy if current_user.id == @item.user_id @item.destroy redirect_to root_path else redirect_to root_path end end private def item_params params.require(:item).permit(:item_name, :image, :price, :text, :category_id, :condition_id, :delivery_charge_id, :prefecture_id, :delivery_day_id ).merge(user_id: current_user.id) end def set_item @item = Item.find(params[:id]) end end
class CreateItems < ActiveRecord::Migration[6.0] def change create_table :items do |t| t.timestamps t.string :item_name, null: false t.text :text, null: false t.integer :category_id, null: false t.integer :condition_id, null: false t.integer :delivery_charge_id, null: false t.integer :prefecture_id, null: false t.integer :delivery_day_id, null: false t.integer :price, null: false t.references :user, null: false, foreign_key:true end end end

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

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

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

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

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

guest

回答1

0

自己解決

gemfileを再度見返しました。お恥ずかしながらこれまでgemfileの記載場所は特に気にせずに入力していて、今回はactive_hashがtestの箇所だけに記載していたことが原因ということがわかり、なんとか無事デプロイすることができました。group :development, :test doの中に記載をしてしまっていたので、一番外側に記載をし直しました。

投稿2023/01/31 13:08

kahoxx121u

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問