🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

1668閲覧

ルーティングエラーを解決したい

daisuke0903

総合スコア2

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/02/13 09:52

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
プログラミングスクールの課題でrailsにてフリマアプリを作成中です。
出品機能で出品ボタンを押してもルーティングエラーが出てしまい、なぜエラーになるのかがわかりません。

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

Routing Error No route matches [POST] "/items/new"

該当のソースコード

itemscotroller

ruby

1class ItemsController < ApplicationController 2 3 def index 4 @items = Item.all 5 end 6 7 def new 8 @item = Item.new 9 unless user_signed_in? 10 redirect_to new_user_session_path 11 end 12 end 13 14 def create 15 @item = Item.new(item_params) 16 if @item.save 17 redirect_to root_path 18 else 19 render :new 20 end 21 end 22 23 private 24 25 def item_params 26 params.require(:item).permit(:item_name,:description,:category_id,:condition_id,:price,:delively_payer_id, 27 :ship_area_id,:ship_day_id) 28 end 29 30 31 32end

items/new.rb 出品ページ

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

routes.rb

ruby

1Rails.application.routes.draw do 2 devise_for :users 3 root to: "items#index" 4 resources :items, only:[:index, :new, :create] 5end

試したこと

form_withにてmodelを記述
出品ボタンにitems_path,method: :postを記述してみたが、変わりませんでした。

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

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

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

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

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

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

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

daisuke0903

2021/02/13 10:57

すみません。 理解度が低くすみません。 ルーティングエラーなので同一のエラーというのはわかるのですが、ここに至るまでに他で悩んでしまいコントローラーが問題なのか、ルートが問題なのかといろいろ考えてわからなくなってしまって、安易に質問してしまいました。
daisuke0903

2021/02/13 11:00

ルートはindex, new, createを記述してあるし、パスも指定したりしたのになぜエラーは解消されないんだろうと考えれば考えるほどわからなくなってしまいました。
m.ts10806

2021/02/13 11:15 編集

ルーティングのリストにあるものが全てです。 ないなら自分でルーティングを書いてみる。(前回の私の回答の主旨です) ドキュメントを確認する。
daisuke0903

2021/02/13 11:33

ありがとうございます。2時間近く悩んでしまってました。 理解度が低いのでresources :items, only:[:index, :new, :create]でルートができて、飛ばしてくれると思っていたので、エラーが出るとなんで??ってなってしまっていました。  form_withの記述を正しくしたら、エラー画面にはならなくなったので解決とさせていただきます。
guest

回答1

0

自己解決

<%= form_with(model: @item, local: true ) do |f| %>

モデル部分を追記したら、エラーにならなくなりました。

投稿2021/02/13 11:34

daisuke0903

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問