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

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

詳細はこちら
Ruby

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

Ruby on Rails

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

Q&A

解決済

2回答

1698閲覧

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

daisuke0903

総合スコア2

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2021/02/07 06:51

前提・実現したいこと

プログラミングスクールにてフリマアプリを作成しています。
ボタンを押して出品ページに遷移させたいのですが、できていません。
恥ずかしながら、悩んでわからなくなってしまいましたので教えていただけるとありがたいです

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

Routing Error No route matches [GET] "/new_item_path"

該当のソースコード

トップページ index.html.erb

ruby

1<%= link_to('new_item_path',method: :get, class: 'purchase-btn') do %> 2 <span class='purchase-btn-text'>出品する</span> 3 <%= image_tag 'icon_camera.png' , size: '185x50' ,class: "purchase-btn-icon" %> 4<% end %> 5<%= render "shared/footer" %>

ルート routes.rb

ruby

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

コントローラー

ruby

1class ItemsController < ApplicationController 2 def index 3 @items = Item.all 4 end 5 6 def new 7 @item = Item.new 8 end 9end

試したこと

コントローラーにアクション定義をしていなかったので、newアクションを記述。
routes.rbの記述
method: :getを記述

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

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

new_item_path は '/items/new' を返す methodです。コーテーションで囲んではいけません。

投稿2021/02/07 07:44

winterboum

総合スコア23567

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

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

winterboum

2021/02/07 23:32

rails routes すると item items new_item とかが並びますが、その後ろに _path, _url をつけたmethodが用意されてます。 そう、その参考URLがそれですね
m.ts10806

2021/02/07 23:41 編集

重複投稿削除…
m.ts10806

2021/02/07 23:40

Railsで覚えるとそれしかできなくなるという一端を見た気がします。 このフレームワークを作った人の血と汗の結晶の裏側も。
winterboum

2021/02/08 03:33

一方、 結晶を知らずに沢山車輪を作る人の多いこと、、、 (私もだけど、、、)
daisuke0903

2021/02/09 14:16

仕事が多忙につき、返信遅れて申し訳ありません。 お二人と自分ではレベルが違いすぎて、恐縮しております。 回答いただきありがとうございました。 コーテーションを外したことで出品ページまでは行けるようになりました。 ありがとうございます。
guest

0

エラーの通りですね。
new_item_pathがルーティングで受け取られていません。

ルーティングは「指定のURLの指定のメソッドをどのコントローラで受け取るか」という設定を行います。
明示されてなければ提示のエラー「No route matches」になります。

Railsチュートリアルなど振り返ってみては。

ドキュメントガイドも確認しましょう。

投稿2021/02/07 07:14

m.ts10806

総合スコア80875

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

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

daisuke0903

2021/02/07 14:05

回答ありがとうございます。
daisuke0903

2021/02/09 14:08

コーテーションを外したことで、出品ページに行けました。 ドキュメントやガイドを教えていただけたので、あやふやな部分がわかりましたので助かりました。 返信遅れて申し訳ありません。
m.ts10806

2021/02/09 20:39

クォートを外して解決されたのでしたら、winterboumさんの回答が直接の回答として正しいと思います。
daisuke0903

2021/02/11 10:52

たびたび失礼しました。 では、ベストアンサーを変更させていただきます。
m.ts10806

2021/02/11 10:55

ただ、こちらの回答にもあちらのコメントにも挙げているように、どんな言語やフレームワークでも、ドキュメントやそれに準じる資料は必ず確認してください。 仕様なのでそこに最も正しいことが書いてあります。
daisuke0903

2021/02/12 08:53

ドキュメントや資料に馴染みがないせいか、ついこの記述はこういう時に使うようだみたいな感じでやってしまっていました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問