Ошибка маршрутизации Rails 3 - «Нет соответствий маршрутов» - PullRequest
2 голосов
/ 31 октября 2010

Я следую вместе с книгой O'Reilly Rails, но она создана для Rails 2, поэтому я думаю, что в этом и заключается ошибка.

В приложении / views / records / sign_in.html.erb:

<html>
<head><title>Hello <%=h @name %> </title> </head>
<body>
<h1> Hello <%=h @name %></h1>

<%= form_tag :action => 'sign_in' do %>
   <p>Enter your name:
   <%= text_field_tag 'visitor_name', @name %> </p>
   <%= submit_tag 'Sign in' %>
   <% end %>
</body>
</html>

И в app / controllers / records_controller.rb:

  class EntriesController < ApplicationController
     def sign_in
        @name = params[:visitor_name]
     end

   end

Когда я нажимаю кнопку «Войти», я перехожу на страницу с надписью:

Ошибка маршрутизации

Не найдено ни одного маршрута "/ records / sign_in"

Я бы опубликовал свой файл rout.rb, но, похоже, он закомментирован за исключением этой строки:

get "records / sign_in"

Этот файл, похоже, отличается от того, на который они ссылаются в книге, поэтому я считаю, что это проблема.

Спасибо за вашу помощь!

Ответы [ 2 ]

5 голосов
/ 31 октября 2010

Если вы изучаете Rails, вам будет гораздо проще использовать ту же версию Rails, что и книгу, из которой вы ее изучаете.Либо учитесь в Rails 2 и обновитесь до 3 позже, либо получите новую книгу.

Между Rails 2 и 3 есть много различий, поэтому вы будете тратить все свое время на путаницукак это.

2 голосов
/ 31 октября 2010

Маршрутизатор Rails 3 сильно изменился.См. Этот пост в блоге: http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/

Возможно, вы захотите сделать следующее:

resources :entries do
  collection do
    post :sign_in
  end
end

Это добавит действие ко всей коллекции (/ records / sign_in) записей (в отличие#member, к которому можно получить доступ через / records /: id / sign_in).Хотя я не уверен, почему вы хотите войти в кого-то на ресурс записи.Для этого вы можете создать отдельный контроллер.

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