1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

NameErrorが出た!

Last updated at Posted at 2021-05-11

#はじめに#
フリマアプリを作成中、NameErrorが出ました。

私の場合だいたい誤字の可能性があるので確認したのですが、誤字・脱字はなく別で原因がありました。

#エラー箇所確認#

商品出品機能の実装で商品を出品する際に必要なものをAcitiveHashを使って表示させようとしました。

app/models/shopping_date.rb
class shopping_date < ActiveHash::Base
  self.data = [
    { id: 1, name: '--'}, { id: 2, name: '1~2日で発送'}, { id: 3, name: '2~3日で発送'},
    { id: 4, name: '4~7で発送'}
  ]

  include ActiveHash::Associations
  has_many :items
  
end
views/items/new.html.erb
 <div class="weight-bold-text">
          発送までの日数
          <span class="indispensable">必須</span>
        </div>
        <%= f.collection_select(:shopping_date_id, shopping_date.all, :id, :name, {}, {class:"select-box", id:"item-scheduled-delivery"}) %>
      </div>
    </div>

データをプルダウン形式で表示させたかったのでcollection_selectメソッドを使用しました。

#結論:モデルの命名規則を忘れていました

モデルに命名規則がある事を忘れていました。
shopping_date.rbを確認するとモデルクラスが小文字でアンダースコア使用してました。

訂正をすると以下になります、

app/models/shopping_date.rb
      #訂正
class ShoppingDate < ActiveHash::Base
  self.data = [
    { id: 1, name: '--'}, { id: 2, name: '1~2日で発送'}, { id: 3, name: '2~3日で発送'},
    { id: 4, name: '4~7で発送'}
  ]

  include ActiveHash::Associations
  has_many :items
  
end
views/items/new.html.erb
 #発送までの日数

<div class="weight-bold-text">
   <span class="indispensable">必須</span>
</div>                   
#訂正
<%= f.collection_select(:ShoppingDate_id, ShoppingDate.all, :id, :name, {}, {class:"select-box", id:"item-scheduled-delivery"}) %>
      

スクリーンショット 2021-05-11 14.39.22.png

上手く反映されました。

1
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?