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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

2169閲覧

RoRでルーティングが全くうまく機能しません

ninpig04

総合スコア33

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

1クリップ

投稿2017/12/05 10:28

ルーティングが間違っていると表示されうまくアクセスできません。

shool/topのviewは

<h1>学校を探しましょう</h1> <p><%= link_to("中学校一覧", "school/junior") %></p> <p><%= link_to("高等学校一覧", "school/high") %></p>

で、ルーティングの設定は
get "school/junior_pref" => "schools#junior_pref"
get "school/high_pref" => "schools#high_pref"
get "school/top" => "schools#index"

となっています。

ちなみにコントローラは

class SchoolController < ApplicationController
def index
end

def junior_pref

end

def high_pref

end

end

となっています。

しかし、学校を探しましょうから各ページに飛ぼうとすると次のようなエラーが出ます
なぜか教えてください
Routing Error
No route matches [GET] "/school/school/junior_pref"

Rails.root: /Users/mycomp/Desktop/app

Application Trace | Framework Trace | Full Trace
Routes

Routes match in priority from top to bottom

Helper HTTP Verb Path Controller#Action
Path / Url
Path Match
school_index_path GET /school/index(.:format)
school#index

school_junior_path GET /school/junior(.:format)
school#junior

school_high_path GET /school/high(.:format)
school#high

POST /likes/:post_id/create(.:format)
likes#create

POST /likes/:post_id/destroy(.:format)
likes#destroy

schools_top_path GET /schools/top(.:format)
schools#top

schools_new_path GET /schools/new(.:format)
schools#new

POST /users/:id/update(.:format)
users#update

GET /users/:id/edit(.:format)
users#edit

users_create_path POST /users/create(.:format)
users#create

signup_path GET /signup(.:format)
users#new

users_index_path GET /users/index(.:format)
users#index

GET /users/:id(.:format)
users#show

login_path POST /login(.:format)
users#login

logout_path POST /logout(.:format)
users#logout

GET /login(.:format)
users#login_form

GET /users/:id/likes(.:format)
users#likes

posts_index_path GET /posts/index(.:format)
posts#index

posts_new_path GET /posts/new(.:format)
posts#new

GET /posts/:id(.:format)
posts#show

posts_create_path POST /posts/create(.:format)
posts#create

GET /posts/:id/edit(.:format)
posts#edit

POST /posts/:id/update(.:format)
posts#update

POST /posts/:id/destroy(.:format)
posts#destroy

GET /
home#top

about_path GET /about(.:format)
home#about

Request

Parameters:

None
Toggle session dump
Toggle env dump
Response

Headers:

None
x

OS:mac
Ruby 2.3.1
Rails 5.0.3

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

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

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

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

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

scivola

2017/12/05 13:39

読みづらいのでコード部分を ``` で囲っていただけますか
guest

回答1

0

ベストアンサー

理由は簡単です。

/school/top を表示した状態で,HTML ソースを見て,

<%= link_to("中学校一覧", "school/junior") %>

の部分がどのような HTML になっているかを見てみてください。

たぶん,

html

1<a href="school/junior">中学校一覧</a>

のようになっているでしょう。

link_to の第二引数がそのまんま href 属性の値になっているのです。
第二引数に文字列を与えるとそうなります。そういう仕様です。

このリンクをクリックすると,当然 /school/school/junior に行きますよね。

投稿2017/12/05 13:46

scivola

総合スコア2108

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

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

ninpig04

2017/12/05 17:44

うまくいきました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問