Не найдено ни одного маршрута [GET] "/users/country.html" - PullRequest
1 голос
/ 16 апреля 2019

Приятно, когда я непосредственно открываю 'http://localhost:3000/country.html' или нажимаю кнопку "Страна" на панели навигации. Но если я сначала нажму «Логин» / «Регистрация» (http://localhost:3000/users/signin.html), а затем нажму кнопку «Страна»), URL-ссылка на «http://localhost:3000/users/country.html'. покажет« Нет совпадений маршрутов [GET] »/ users /maison.html "". Более того, цвет "Логин" меняется на странный красный, который похож на общедоступную красную страницу "404" по умолчанию. Может кто-нибудь сказать мне, почему разные последовательности кликов приведут к разным URL и как я могу выяснить проблему? Спасибо!

Это приложение, основанное на Ruby on Rail, с devise, ruby-2.3.7, 'rails', '~> 5.2.2' и mysql. Я использую macOS Mojave.

'''
    'application.html.erb':

<div class="outside_container">
  <div class="main_container">
    <div class="navbar clearfix">
      <div class="container">
        <ul class="nav left">
          <li><a href="./introduction.html">Introduction</a></li>
          <li><a href="./country.html">Country</a></li>
          <li><a href="./maison.html">Maison</a></li>
        </ul>


          <% if notice %>
            <p class="notification"><%= notice %></p>
          <% end %>
          <% if alert %>
            <p class="notification"><%= alert %></p>
          <% end %>


      <ul>
          <p class="nav right">
            <% if user_signed_in? %>
              <%= link_to "Edit profile", edit_user_registration_path %> | 
              <%= link_to "Logout", destroy_user_session_path, method: :delete  %> |

            <% else %>
              <%= link_to "Sign up", new_user_registration_path %> |
              <%= link_to "Login", new_user_session_path %> |

            <% end %>
          </p>
        </ul>

    </div>  
  </div>
'''

извините за отсутствие route.rb, вот оно: 'Route.rb':

Rails.application.routes.draw do

  devise_for :users


#make sure devise/session/new, which means the login page is the root page
  devise_scope :user do
  authenticated :user do
    root 'country#index', as: :authenticated_root
  end

  unauthenticated do
    root 'devise/sessions#new', as: :unauthenticated_root
  end
end

get '/country', to: 'country#index'
get '/maison', to: 'maison#index'

  # The priority is based upon order of creation: first created -> highest priority.
  # See how all your routes lay out with "rake routes".

  # You can have the root of your site routed with "root"

  #root 'page#welcome'

  resources :country
  resources :maison
  resources :introduction
  resources :dashboard

end

Ответы [ 3 ]

0 голосов
/ 16 апреля 2019

Удалить точку из ваших URL. Точка делает его относительным путем, поэтому, где бы вы ни находились в приложении, он будет использовать этот путь в качестве отправной точки для этих ссылок. Если вы удалите точку, она всегда будет использовать ваш корневой путь для построения ссылок.

<li><a href="/introduction.html">Introduction</a></li>
<li><a href="/country.html">Country</a></li>
<li><a href="/maison.html">Maison</a></li>
0 голосов
/ 17 апреля 2019

Есть пара вещей:

  1. Файл должен называться route.rb (множественное число) Так что измените route.rb на routes.rb.

  2. Используйте команду $rails routes или $rake routes Чтобы получить список всех доступных вам маршрутов. Если ничего не отображается, то рельсы не распознают ваши маршруты.

  3. Используйте, например, «Ссылка на» <%= link_to user.title, users_path(user) %>

0 голосов
/ 16 апреля 2019

Похоже, что у вас есть href <li><a href="./maison.html">Maison</a></li>, который указывает на /maison, что означает, что где-то в вашем маршруте. :

get '/maison', to: 'home#index`

В приведенном выше маршруте мы говорим: «любой get запрос к адресу /maison должен вызывать метод index в файле home_controller в Rails.

Как только вы правильно настроите маршрут и контроллер, все должно работать правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...