Итак, вытащив мои волосы в течение часа, я решил опубликовать это здесь.Я получаю эту ошибку:
NoMethodError in Articles#show
Showing /home/leon/sites/VIS/app/views/articles/_article.html.erb where line #3 raised:
undefined method `user_path' for #<#<Class:0x7fdd81fe1eb8>:0x7fdd81fdfdc0>
Extracted source (around line #3):
1: <div id="left-column">
2: <p class="label-b">Author<br>
3: <%= link_to "#{@article.user.penname}'s profile", user_path(article.user) %>
user_path (article.user)%>
Когда я пытаюсь связаться с автором статьи.Мой файл маршрутов:
resources :tags
get "admin/index"
get "admin/show"
get "articles/contact"
get "articles/about"
resources :roles
devise_for :users, :controllers => { :registrations => "users/registrations" }
resources :articles do
resources :comments
end
В моем файле модели статьи есть пользователь own_to: и статьи в моем файле модели has_many: article.Я использую эту ссылку для ссылки на профиль автора в статье.
Пожалуйста, помогите!Я использую can может для управления разрешениями и разработки для моей аутентификации, но она выдает ошибку в действии show статьи, поэтому я не опубликовал этот код.Дайте мне знать, если я должен.Спасибо!
@ Jacob
Я получаю ту же ошибку:
NoMethodError в статьях # show
Показ / home / leon / sites / VIS / app/views/articles/_article.html.erb, где поднята строка # 3:
неопределенный метод `user_path 'для # <#: 0x7fdd82217a98> Извлеченный источник (вокруг строки # 3):
1: 2: Автор
3: <% = link_to "# enj@article.user.penname профиля пользователя", article.user%> 4: Предыдущие версии 5: Версия 7
6: <% = image_tag"add-to-favourites.png",: class => "кнопка-избранное"%>
Соответствующая часть моих маршрутов:
{:action=>"destroy", :controller=>"roles"}
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 GET /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"}
user_password PUT /users/password(.:format) {:action=>"update", :controller=>"devise/passwords"}
user_registration POST /users(.:format) {:action=>"create", :controller=>"users/registrations"}
new_user_registration GET /users/sign_up(.:format) {:action=>"new", :controller=>"users/registrations"}
edit_user_registration GET /users/edit(.:format) {:action=>"edit", :controller=>"users/registrations"}
user_registration PUT /users(.:format) {:action=>"update", :controller=>"users/registrations"}
user_registration DELETE /users(.:format) {:action=>"destroy", :controller=>"users/registrations"}
user_confirmation POST /users/confirmation(.:format) {:action=>"create", :controller=>"devise/confirmations"}
new_user_confirmation GET /users/confirmation/new(.:format) {:action=>"new", :controller=>"devise/confirmations"}
user_confirmation GET /users/confirmation(.:format) {:action=>"show", :controller=>"devise/confirmations"}
Ага!У него нет маршрута для пользователя # show, но я не уверен, почему, поскольку у меня есть:
class UsersController < ApplicationController
...
def show
respond_to do |format|
format.json { render :json => @user }
format.xml { render :xml => @user }
format.html
end
rescue ActiveRecord::RecordNotFound
respond_to_not_found(:json, :xml, :html)
end
в моей папке app / controllers.Нужно ли переместить мой пользовательский контроллер в app / controllers / devise и перегрузить его с помощью devise вместо контроллера приложений?