#はじめに#
フリマアプリを作成中、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"}) %>
上手く反映されました。