Я впервые использую Devise в приложении, и у меня возникла странная проблема, которую я не могу понять:
Я создал свою модель User с Devise, настроил все регистрации, регистрацию пользователей и т. Д., И все работает отлично. В заголовке моего приложения у меня есть меню навигации (которое в настоящее время пусто) и часть с входом, выходом и т. Д .:
_header.html.erb
<div class='topbar'>
<div class='container'>
<%= link_to 'My app', root_path, :class => 'brand' %>
<div class='nav'>
</div>
<%= render 'layouts/user_options' %>
</div>
</div>
_user_options.html.erb
<ul class='user-options'>
<% if user_signed_in? %>
<li><%= link_to "Signed in as #{current_user.username}", '#' %></li>
<li><%= link_to "Sign out", destroy_user_session_path, :method => :delete %></li>
<% else %>
<li><%= link_to "Sign up", new_user_registration_path %></li>
<li><%= link_to "Sign in", new_user_session_path %></li>
<% end %>
</ul>
Теперь я добавляю первую ссылку в навигационное меню, если я использую:
<%= link_to 'Tasks', '/tasks/index' %>
Все хорошо. НО если я использую:
<%= link_to 'Tasks', :controller => 'tasks', :action => 'index' %>
Когда я нажимаю на любую из ссылок Devise, например «Войти», я получаю 'No route matches {:controller=>"devise/tasks"}'
По запросу на комментарии, здесь вывод rake routes:
Задачи: TOP => маршруты => среда
(Смотрите полную трассировку, запустив задачу с --trace)
MacBook-Pro-de-o: дорогой оскар $ bundle exec rake маршруты
tasks_index GET /tasks/index(.:format) {:controller=>"tasks", :action=>"index"}
tasks_show GET /tasks/show(.:format) {:controller=>"tasks", :action=>"show"}
new_user_session GET /users/sign_in(.:format) {:action=>"new", :controller=>"devise/sessions"}
user_session POST /users/sign_in(.:format) {:action=>"create", :controller=>"devise/sessions"}
destroy_user_session DELETE /users/sign_out(.:format) {:action=>"destroy", :controller=>"devise/sessions"}
user_password POST /users/password(.:format) {:action=>"create", :controller=>"devise/passwords"}
new_user_password GET /users/password/new(.:format) {:action=>"new", :controller=>"devise/passwords"}
edit_user_password GET /users/password/edit(.:format) {:action=>"edit", :controller=>"devise/passwords"}
PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
cancel_user_registration GET /users/cancel(.:format) {:action=>"cancel", :controller=>"devise/registrations"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"devise/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"devise/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"devise/registrations"}
PUT /users(.:format) {:action=>"update", :controller=>"devise/registrations"}
DELETE /users(.:format) {:action=>"destroy", :controller=>"devise/registrations"}
root / {:controller=>"pages", :action=>"home"
а вот маршруты.rb:
get "tasks/index"
get "tasks/show"
devise_for :users
root :to => 'pages#home'
Почему это ?? Что я делаю не так?
Edit2 : Кстати, я забыл упомянуть, что Task belongs_to User
, и модель User была сгенерирована devise. Что, вероятно, является причиной этого. Я не могу получить доступ к / tasks / index без / user / id / tasks /?
Редактировать : более странные вещи, я попытался использовать ресурсы: задачи в моем файле маршрутов вместо маршрутов 'get' для этого контроллера, и теперь, когда я нажимаю <%= link_to 'Tasks', :controller => 'tasks', :action => 'index' %>
, он переводит меня в Действие шоу. Так что что-то действительно не так с моими маршрутами, по-видимому.