ActionController :: UrlGenerationError в User # register Не найдено ни одного маршрута {: action => "about",: controller => "user"} - PullRequest
0 голосов
/ 04 октября 2019

Я следую книге Майкла Хартла: "RailsSpace строит социальную сеть с помощью ruby ​​on rails" . Я на странице 91,

Когда я пытаюсь перейти на страницу регистрации, я получаю это:

ActionController::UrlGenerationError in User#register No route matches {:action=>"about", :controller=>"user"}

Кто-нибудь знает почему? Пожалуйста, помогите.

У меня есть файл register.html.erb, сохраненный в папке app/views/user. Я не знаю, почему у меня возникает ошибка генерации URL.

Вот код для app/views/user/register.html.erb:

<h2>Register</h2>
<% form_for :user do |form| %>
  <fieldset>
    <legend>Enter Your Details</legend>
    <label for="screen_name">Screen name:</label>
    <%= form.text_field :screen_name %>
    <br />
    <label for="email">Email:</label>
    <%= form.text_field :email %>
    <br />
    <label for="password">Password:</label>
    <%= form.password_field :password %>
    <br />
    <%= submit_tag "Register!", :class => "submit" %>
  </fieldset>
<% end %>

Вот код для моего пользовательского контроллера:

 class UserController < ApplicationController
  layout "site"

   def index
   end

   def register
   @title = "Register"
 end
end

Вот мой файл route.rb:

 Rails.application.routes.draw do
 get 'user/index'
 get 'user/register'
 get  'site/index'
 get '/site/about'
 get 'site/help'

 root  'site#index'


 end

Я пытаюсь попасть на страницу регистрации, набрав:

localhost:3000/user/register

почему он говорит:

Showing C:/Users/Vanessa/rails_space/app/views/layouts/site.html.erb where line #16 raised

Вот что отображается в моей консоли:

 ActionView::Template::Error (No route matches {:action=>"about", 
 :controller=>"user"}):
    13:      <div id="nav">
    14:
    15:       <%= link_to_unless_current "Home", :action => "index" %> |
    16:       <%= link_to_unless_current "About Us" , :action => "about" %> |
    17:       <%= link_to_unless_current "Help", :action => "help" %>
    18:
    19:         </div>

Спасибо всем заранее за помощь.

Вот мой файл app / views / layouts / site.html.erb:

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  <html>
   <head>
    <title><%= @title %></title>
   <%= stylesheet_link_tag "site" %>
  </head>
 <body>

  <div id="whole_page">

 <div id="header">RailsSpace</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">
   <%= yield %>
      </div>
     </div>
   </body>
  </html>

Ответы [ 2 ]

1 голос
/ 04 октября 2019

Вы объявили маршрут неправильно. Существует несколько способов объявления маршрутов, и на начальном этапе становится трудно увидеть различия.

Вы не указали, какое действие контроллера должно быть выполнено при просмотре пользователем пути «users / about». Для вашего синтаксиса используйте:

get 'users/about', to: 'user#about'

Надеюсь, это поможет!

0 голосов
/ 04 октября 2019

Вспомогательный метод для перехода на эту страницу может быть неправильным.

Попробуйте запустить rails routes, чтобы увидеть его.

...