質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

6669閲覧

RailsでUrlGenerationErrorが解決できない

FPC_COMMUNITY

総合スコア19

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/06/30 05:22

#エラー内容
以下の写真のようなエラーが出ます。
イメージ説明

ActionController::UrlGenerationError in BuyMgt#new Showing C:/Users/yugeh/Documents/RailsApp/lab-manager2/app/views/buy_mgt/new.html.erb where line #29 raised: No route matches {:action=>"create", :controller=>"buy_mgt"}

#該当のソースコード
該当のViewのところは以下の通りです。
new.html.erb

<h2>購入希望申請フォーム</h2> <%= form_for(@buy_item, :url => {:controller => :buy_mgt, :action => :create}) do |f| %> <p> <%= f.label :name, "備品名" %><br> <%= f.text_field :name %> </p> <p> <%= f.label :url, "URL" %><br> <%= f.url_field :url %> </p> <p> <%= f.label :main_genre, "親ジャンル名" %><br> <%= f.text_field :main_genre %> </p> <p> <%= f.label :sub_genre, "子ジャンル名" %><br> <%= f.text_field :sub_genre %> </p> <%= f.submit "申請する"%> <% end %>

controllerは以下のようになっています。
buy_mgt_conroller.rb

class BuyMgtController < ApplicationController def new @buy_item = Buy.new @buy_items = Buy.all end def create @buy_item = Buy.new(buy_item_params) @buy_item.save render 'items/index' end private def buy_item_params params.require(:buys).permit(:name, :url, :sub_genre, :main_genre) end end

ルーティングは以下のようになっています。

get '/buy', to: 'buy_mgt#new' post '/' => 'ask_items#create'

#試したこと
最初ルーティングが上手くいってないと思い、route.rbを見直したのですがどこが原因なのかわからず...。
ActionController::UrlGenerationErrorでググってみたのですが私のエラー内容とマッチしないものが多くて解決方法は得られませんでした...。

どなたか解決方法を教えて頂きたいです。よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージから以下のことが推測できます。

  • UrlGenerationError」は単語直訳だけでも、URL生成しようとして失敗していることが分かります。
  • No route matches {:action=>"create", :controller=>"buy_mgt"}」から、ハッシュデータに一致するルートがないと言っていることが分かります。
  • ルートの一覧にbuy_mgt#createがありません。

ルーティング設定が間違っているのでしょう。

formの宛先にハッシュ値を直に記述していますが、railsの命名規則に従った記述を行っていれば、変数名などから自動で適切なURLを生成してくれるはずです。

投稿2019/06/30 05:54

編集2019/06/30 06:02
tkmtmkt

総合スコア1800

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

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

FPC_COMMUNITY

2019/06/30 06:44

route.rbにbuy_mgt#createのルートを設定すれば解決するかも、という認識であってるでしょうか?
FPC_COMMUNITY

2019/06/30 09:53

ルーティングをもう1ちゃんと読み直したら、単に存在しないcontrollerを指定していただけでした!!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問