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

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

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

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

Ruby on Rails

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

Q&A

解決済

2回答

1151閲覧

Railsでのアクセス時に最初に表示させる画面の設定について教えてください。(エラー解決方法)

koume

総合スコア458

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2017/11/10 03:15

編集2017/11/10 08:34

Rails5.1.3でWebアプリケーション制作の勉強をしています。現在は「管理所用ページ」、「職員用ページ」、「顧客用ページ」、
「新規登録用ページ」と個別にアクセスしながら開発をしています。
実際には以下のように最初にサイトへアクセスしたとき「顧客用ページ」、「新規登録用ページ」を選択する表示にしたいのです。
イメージ説明

ご指導願えませんでしょうか?コードは以下になります。

Rails.application.routes.draw do config = Rails.application.config.chibi constraints host: config[:staff][:host] do namespace :staff, path: config[:staff][:path] do root 'top#index' get 'login' => 'sessions#new', as: :login resource :session, only: [ :create, :destroy ] resource :account, except: [ :new, :create, :destroy ] do patch :confirm end resource :password, only: [ :show, :edit, :update ] resources :customers resources :registers resource :bank resources :programs do patch :entries, on: :member end resources :messages, only: [ :index, :show, :destroy ] do get :inbound, :outbound, :deleted, :count, on: :collection post :tag, on: :member delete :tag, on: :member resource :reply, only: [ :new, :create ] do post :confirm end end resources :tags, only: [] do resources :messages, only: [ :index ] do get :inbound, :outbound, :deleted, on: :collection end end end end constraints host: config[:admin][:host] do namespace :admin, path: config[:admin][:path] do root 'top#index' get 'login' => 'sessions#new', as: :login resource :session, only: [ :create, :destroy ] resources :staff_members do resources :staff_events, only: [ :index ] end resources :staff_events, only: [ :index ] resources :allowed_sources, only: [ :index, :create ] do delete :delete, on: :collection end end end constraints host: config[:customer][:host] do ------------------ここから下が顧客のルーティング namespace :customer, path: config[:customer][:path] do root 'top#index' get 'login' => 'sessions#new', as: :login resource :session, only: [ :create, :destroy ] resource :account, except: [ :new, :create, :destroy ] do patch :confirm end resource :register, only: [ :show ] resource :seventeen, only: [ :show ] resource :eighteen, only: [ :show ] resource :nineteen, only: [ :show ] resource :twentie, only: [ :show ] resource :one, only: [ :show ] resource :score, only: [ :show ] resource :sponsor, only: [ :show ] resource :special, only: [ :show ] resource :member, only: [ :show ] resource :point, only: [ :show ] resource :bank, except: [ :destroy ] do patch :confirm end resources :programs, only: [ :index, :show ] do resources :entries, only: [ :create ] do patch :cancel, on: :member end end resources :messages, except: [ :edit, :update ] do post :confirm, on: :collection resource :reply, only: [ :new, :create ] do post :confirm end end resource :record do get :individual get :bonus_record get :bonus_title get :sponsor_point get :bonus_point get :quarter_point get :bonus_money end resource :rule do get :agreement get :how_to_use get :maintenance get :unsubscribe get :privilege get :lapse get :cache get :bonus get :privilege_bonus get :question get :personal get :account get :mouse end end end constraints host: config[:visitor][:host] do -------------ここから下が新規登録のルーティングです。 namespace :visitor, path: config[:visitor][:path] do root 'top#index' resources :customers resource :rule do get :agreement get :how_to_use get :maintenance get :unsubscribe get :privilege get :lapse get :cache get :bonus get :privilege_bonus get :question get :personal get :account get :mouse end resources :customers end end root 'errors#routing_error' get '*anything' => 'errors#routing_error' end
コントローラ app/controllers/doors_controller.rb class DoorsController < ApplicationController def home end end
home.html.erb <% @title = 'トップページ' %> <h1><%= @title %></h1> <p>サイトの説明  # http://example.con:3000/mypageで個別に顧客ページにアクセスはできます。 <%= link_to(image_tag("haunted-castle-859390_640.png", size: "60*60", alt: "顧客ページ", align: "top") :http://example.con:3000/mypage) %></p>  # http://example.com:3000/visitorで個別に新規登録ページにアクセスはできます。 <p> <%= link_to(image_tag("key-2114046=640.png", size: "60*60", alt: "新規登録", align: "top") :http://example.com:3000/visitor) %> </p>

アクセスするのはhttp://example.com:3000でいいのでしょうか?

どなたか教えていただけないでしょうか?宜しくお願いします。

追記2: door#home記述前のコードを全て表示しています。
doors_controllerのhomeアクションを読み込みたいのですがどうroutes.rbに記述したらいいのかわかりません。
またリンクの貼り方もこれでいいのでしょうか?

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

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

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

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

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

guest

回答2

0

ベストアンサー

root to: 'door#home'を一番下に持ってきてみてはいかがでしょうか?
ルーティングには記述する順番でエラーになることがあります。

投稿2017/11/10 04:22

kenny_sayama

総合スコア1036

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

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

koume

2017/11/10 04:55

回答ありがとうございます。一番下に記述したところエラーは出なくなりました。ただ、doorのページに アクセスするには呼び出しをどう打ち込めばいいのでしょうか?http://aaa.example.com/doorだとRouting エラーになってしまいます。
kenny_sayama

2017/11/10 05:11

エラー内容を教えていただけますか?
koume

2017/11/10 05:15

ActionController::RoutingError (No route matches "/door"): このようにエラーが出ます。
kenny_sayama

2017/11/10 05:19

get '/door', to: 'コントローラー名#アクション名' をroutes.rbに定義すればいいと思います
koume

2017/11/10 05:38

何度もすいません。root to: 'door#home'をget'/door', to: 'door#home'に 変えればいいのでしょうか?やってみましたが ActionController::RoutingError (No route matches "/mypage/session"): となってしまいました。
kenny_sayama

2017/11/10 05:43

説明足らずで申し訳ありません! どのURLパターンでアクセスさせたいかを再度整理した方がいいのではないでしょうか? そして順序よくルーティングを定義していけば、問題箇所がすぐわかると思います。 上記の回答ですが、 ルーティング定義の一番下に、root to: 'door#home'を記述し、そのすぐ上くらいに、get 'door', to: 'door#home'とすればいいのではないでしょうか? 逆に一度上記二つ以外消してみて、少しづつ処理を足してどこでエラーになってるか確認してください
koume

2017/11/10 07:28

回答ありがとうございます。routes.rbの記述が多くなってしまっていて かなり混乱しているのが現状です。もう一度整理してみます。 今後とも宜しくお願い押します。
kenny_sayama

2017/11/10 07:57

あまりお力になれず申し訳ありません・・・ 解決出来ましたでしょうか?
koume

2017/11/10 08:04

なかなかうまくいきません。今度は別のエラーがでています。 ArgumentError:Missing :controller key on routes definition, please check your routes.エラーの内容が理解できないので調べている最中です。
koume

2017/11/10 08:42

routes.rbとdoors_controller.rbとhome.html.erbのコードを載せましたので みていただけないでしょうか?routes.rbにどう記述すればいいのかわかりません。自力ではどうしようもないのでお願いしたいのですが。
koume

2017/11/10 08:42

routes.rbとdoors_controller.rbとhome.html.erbのコードを載せましたので みていただけないでしょうか?routes.rbにどう記述すればいいのかわかりません。自力ではどうしようもないのでお願いしたいのですが。
kenny_sayama

2017/11/11 09:55

root to: 'door#home'ではなく、root to: 'doors#home'ではないでしょうか?
koume

2017/11/11 10:07

回答ありがとうございます。それもやってみましたが同じなんです。 何が原因かわからなくそのままではダメだと思いますが、とりあえずルーティングでページを選択させず visitorにアクセス時に選択できるように変えてみます。
guest

0

root to: 'door#home'と記述してみてください

投稿2017/11/10 03:55

haneru

総合スコア440

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

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

koume

2017/11/10 04:05

回答ありがとうございます。やってみましたが同じエラーでした。 root 'doors#home'にした時のエラー表示に質問内容を編集しました。 なぜかcustomerの部分テンプレートを読み込んでいるのですがなぜなのでしょうか?
haneru

2017/11/10 04:28

`route.rb`の各namespaceに記述してあるrootの記述を消してみていただけないでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問