1

Я просматриваю учебник по Ruby on Rails и готов к съемкам.Ошибки и действия маршрутизации не найдены

первый вопрос:. приложения/HTML/эрб он продолжает говорить мне «Rails действия„индекс“,„о“и„помощь“не может быть найден, однако, когда я нахожусь на localhost3000/сайт/индекс Я могу перемещаться по страницам просто отлично Любая идея, почему это говорит мои действия не может быть найдена

<!DOCTYPE html> 
<html> 
    <head> 
     <title><%= @title %></title> 
     <%= stylesheet_link_tag 'application.css' %> 
    </head> 
    <body> 
     <div id="whole_page"> 
      <div id="header">Work<b>Link</b></div> 
      <div id= "nav"> 
       <%= link_to_unless_current 'Home', action: 'index' %> | 
       <%= link_to_unless_current 'About Us', action: 'about' %> | 
       <%= link_to_unless_current 'Help', action: 'help' %> 
      </div> 
     <div id="content"> 
      <%= @content_for_layout %> 
      <%= yield %> 
     </div> 
     </div> 
    </body> 
</html> 

2-й вопрос:.? Однако, когда я пытаюсь загрузить другую страницу контроллера localhost3000/пользователей/зарегистрируйтесь, он перевернется и даст мне ошибки. Он продолжает говорить о том, что есть проблема с Нет маршрута матчей [не GET] «/ пользователь/индекс»

Это мой routes.rb

Rails.application.routes.draw do 
    get 'users/index' 

    get 'users/register' 

    get 'site/index' 

    get 'site/about' 

    get 'site/help' 

    root 'site#index' 

Ive было шарить вокруг с этим весь день и не могу найти решение. Любая помощь будет принята с благодарностью.

ответ

4

Неверные определения routes.

Например, для user#index вы должны сказать Rails, какие действия контроллера для вызова, когда он соответствует этому конкретному маршруту в URL:

get '/users', to: 'users#index' 

Это означает, что, когда вы попали в URL, как localhost:3000/users он будет соответствовать этот маршрут будет называться index.

В качестве альтернативы, вы можете использовать Rails конвенции об определении resourceful routes и есть:

resources :users 

в файле routes, затем Rails создаст все CRUD маршруты для приложения:

  users GET /users(.:format)      users#index 
       POST /users(.:format)      users#create 
     new_user GET /users/new(.:format)     users#new 
     edit_user GET /users/:id/edit(.:format)    users#edit 
      user GET /users/:id(.:format)     users#show 
       PATCH /users/:id(.:format)     users#update 
       PUT /users/:id(.:format)     users#update 
       DELETE /users/:id(.:format)     users#destroy 

Я настоятельно рекомендую вам прочитать Rails official documentation for Routes

+0

так что это должно быть 'get 'user # index''? Я получаю сообщение об ошибке. –

+0

'get/users' было бы хорошо –

0

Если вы подаете иск только посредникам-посредникам попытается связать действие с этим именем в контроллере, который в настоящий момент выполняет действие. Поэтому при рендеринге с разных контроллеров вам также нужно будет указать значение для ключа controller:.

+0

Можете ли вы привести мне пример. Я супер новичок в этом. –

+0

Какие контроллеры у вас есть? Допустим, у вас есть 'SiteController', определяющий действие' help'. Тогда вам придется написать 'link_to_unless_current 'Help', action: 'help', controller: 'sites''. Также исправьте свои маршруты, как указано ниже. –

+0

Замечательно! И что вы имеете в виду относительно установления маршрутов. –

Смежные вопросы