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

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

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

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

Q&A

解決済

3回答

749閲覧

rails route エラー

amebonch

総合スコア5

Ruby on Rails

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

0グッド

0クリップ

投稿2020/01/17 16:52

空欄に数値を入力して計算結果を反映させたページを表示するしたい。

初歩的な質問で申し訳ありません。
表中の空欄に数値を入力して 計算結果の数値を反映させる換算機能を作りたいのですが、結果のページが表示されずエラーが生じます。

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

エラーメッセージ No route matches [GET] "/caluculator" Rails.root: /vagrant/potassium Application Trace | Framework Trace | Full Trace Routes Routes match in priority from top to bottom

該当のソースコード

Rails.application.routes.draw do

get 'potassium' => 'root#top'
post 'calculators' => 'calculators#index'
resources :calculators
end

コントローラー
class CalculatorsController < ApplicationController
def initialize(number)
@number = Number.
end
def new
@number = Number.new
end

def create
number = Number.new(number_params)
number.save
redirect_to number_path(number.id)
end

def show
@number = Number.find(params[:id])
end

def index
@numbers = Number.all
end
def reset
@number = Number.find(params[:id])
@numbers.destroy_all
redirect_to '/top'
end
private
def number_params
params.require(:number).permit(:id)
end
end

試したこと

コントローラー名を複数or単数で作り直してみる。calculatorでなくnumberに作り替えてみる。
アクション名をindexまたはshowにしてみる。

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

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

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

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

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

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

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

guest

回答3

0

ベストアンサー

"/caluculators" を呼べば通るとは思うのですが、通っても動くかというと疑問

1) Contrller の def initialize は削除してください。
ApplicationController が用意している initialize が上書きされてしまうのでまずいです。
2) 計算実行のPOST も indexを呼んでいますが、def index には計算に関わるcodeが書かれて居ません。

この辺りは「次の質問」になってしまうのかも、ですがその時は index.htmlも載せてください

投稿2020/01/17 21:38

winterboum

総合スコア23549

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

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

amebonch

2020/01/17 23:21

ありがとうございます。
guest

0

localhost:3000/caluculators

投稿2020/01/17 17:14

no1knows

総合スコア3365

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

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

0

resourcesの部分見逃してました。

routes.rbでは

rb

1post 'calculators' => 'calculators#index' 2resources :calculators

でリクエストを受け付けるようになっています。

実際には/caluculatorのURLにGETリクエストが送られています。
/caluculator/:id宛にリクエストを送るようにすれば良さそう。

投稿2020/01/17 17:13

編集2020/01/17 17:19
Mugheart

総合スコア2349

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

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

amebonch

2020/01/17 23:22

ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問