RailsTutorial: ошибка после настройки маршрутов

Я следую руководству Майкла Хартла по рельсам (глава 5, раздел 5.3.4). Я добавил все маршруты, но я не могу следовать им, как он описывает. Во-первых, я не уверен, нужно ли их вручную вводить в адресную строку или они должны работать, переходя по ссылкам. Это работает, если я ввожу их вручную, но ссылки не работают. Во-вторых, тест маршрутизации не может найти 2 корневых маршрута. Я пытался найти какие-либо ошибки, но безрезультатно. Вот разделы, которые, как мне кажется, относятся к корневому пути.

маршруты.rb

Rails.application.routes.draw do
  root             'static_pages#home'
  get 'help'    => 'static_pages#help'
  get 'about'   => 'static_pages#about'
  get 'contact' => 'static_pages#contact' 

_header.html.erb

<header class="navbar navbar-fixed-top navbar-inverse">
  <div class="container">
    <%= link_to "sample app", 'root_path', id: "logo" %>
    <nav>
      <ul class="nav navbar-nav pull-right">
        <li><%= link_to "Home",   'root_path' %></li>
        <li><%= link_to "Help",   'help_path' %></li>
        <li><%= link_to "Log in", '#' %></li>
      </ul>
    </nav>
  </div>
</header>

site_layout_test.rb

class SiteLayoutTest < ActionDispatch::IntegrationTest
  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
  end
end

Я чувствую себя довольно глупо, поскольку я должен был бы понять это, но все это так ново для меня. Заранее спасибо за вашу помощь.


person PhotonJohn    schedule 30.10.2014    source источник
comment
Вы можете зайти в консоль и набрать «рейк-маршруты» и сообщить мне, что она возвращает?   -  person Georg Keferböck    schedule 30.10.2014
comment
Кроме того, что вы получаете, когда нажимаете на эти ссылки / или вводите их вручную?   -  person Georg Keferböck    schedule 30.10.2014


Ответы (1)


Вы просто ссылаетесь на строки 'root_path' и 'help_path', которые не будут работать. Это помощники пути, методы, которые вам нужно вызывать. Просто измените это:

<li><%= link_to "Home",   'root_path' %></li>

К этому:

<li><%= link_to "Home", root_path %></li>

И так везде, где вы это видите, и это должно работать.

person Nick Veys    schedule 30.10.2014
comment
Дох! Я заменил # из предыдущего «#» обновлениями *_path. Это была настоящая глупая ошибка. Спасибо за быстрый ответ! - person PhotonJohn; 30.10.2014