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

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

ただいまの
回答率

87.36%

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 2,410

score 162

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に記述したらいいのかわかりません。
またリンクの貼り方もこれでいいのでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/10 17:42

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

    キャンセル

  • 2017/11/11 18:55

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

    キャンセル

  • 2017/11/11 19:07

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/10 13:05

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

    キャンセル

  • 2017/11/10 13:28

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

    キャンセル

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

  • ただいまの回答率 87.36%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

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