前提・実現したいこと
RailsでECサイトを作っております。
管理者(admin)のitems/new.html.erbでform_withを使い商品登録を実装しようとしましたが送信はされているのですがDBに反映されておらず、思った挙動をしてくれません。
発生している問題・エラーメッセージ
f.submitのボタンを押しても反応せず、コンソールでItem.allをしても反映されていない。
該当のソースコード
admin/items_controller
class Admin::ItemsController < ApplicationController def new @item = Item.new end def show @item = Item.find(params[:id]) end def create @item = Item.new(item_params) if @item.save redirect_to admin_item_path(@item.id) else render :new end end def index end private def item_params params.require(:item).permit(:genre_id,:name,:introduction,:price,:image,:is_sale) end end
admin/items/new.html.erb
<html> <head> <meta charset="UTF-8"> </head> <body> <div class="container"> <h1>商品新規登録</h1> <div class="row"> <%= form_with model: [:admin, @item], url: admin_items_path, method: :post, local: true do |f| %> <div class="col-sm-4"> <%= f.attachment_field :image, placefolder: "商品画像" %> </div> <div class="col-sm-4"> <p><strong>商品名</strong> <%= f.text_field :name %></p> <p><strong>商品説明文</strong> <%= f.text_area :introduction %></p> <p><strong>ジャンル</strong> <%= f.collection_select :genre_id, Genre.all, :id, :name, :prompt => "選択してください" %></p> <p><strong>税抜き価格</strong> <%= f.text_field :price %>円</p> <p><strong>販売ステータス</strong> <%= f.select :is_sale, [['無効',0], ['有効',1]], :prompt => "選択してください" %></p> </div> <div class="col-sm-4"> <%= f.submit '新規登録', class: "btn btn-default btn-pink" %> </div> <% end %> </div> </div> </body> </html>
item.rb
class Item < ApplicationRecord with_options presence: true do validates :name validates :introduction validates :price validates :image_id end belongs_to :genre attachment :image end
試したこと
form_withのパスの指定が違っていたかもと思い確認したが、
admin_items GET /admin/items(.:format) admin/items#index
POST /admin/items(.:format) admin/items#create
となっていたので正しいと思った
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー