неинициализированная константа с дружескими отношениями - PullRequest
1 голос
/ 16 февраля 2010

Я новичок в rails и получаю следующую ошибку:

NameError in FriendshipsController#create  
uninitialized constant FriendshipsController

это также показывает:

{"authenticity_token"=>"eQvv3flATE+P1TEErOWP/6fM8dEOIBxltobCxtM/F18=",
 "friend_id"=>"32"}

Когда я нажимаю ссылку "Добавить друга" на странице просмотра моих пользователей. Я слежу за Railscast о само-ссылочных ассоциациях с T, но я продолжаю получать эту ошибку, и я не могу найти никакой информации о ней, даже что означает «неинициализированная константа». Я узнал из интернета, что он МОЖЕТ быть связан с плагином act_as_authenticated, но я выполнил одно найденное исправление, и оно не сработало.

Вот код с моей страницы пользователя / show.html.erb:

<%= link_to "Add Friend", friendships_path(:friend_id => @user.id), :method => :post %> 

и код моего контроллера дружбы:

def create
  @friendship = current_user.friendships.build(:friend_id => params[:friend_id])
  if @friendship.save
    flash[:notice] = "Added friend."
    redirect_to root_url
  else
    flash[:error] = "Unable to add friend."
    redirect_to root_url
  end
end

Где я иду здесь не так? Я не имею ни малейшего понятия, что вызывает это. Пожалуйста, дайте мне знать, если мне не хватает необходимого кода.

Ответы [ 3 ]

1 голос
/ 16 февраля 2010

Сложно сказать. Вы должны опубликовать верхнюю часть вашего класса ... требует, определение класса, включает и все остальное, что у вас есть, кроме ваших методов, а также метод create.

0 голосов
/ 01 апреля 2014

Я думаю, ты бежишь rails g controller Friendship

пока вы должны были использовать rails g controller Friendships

, поэтому все файлы теперь в единственном числе Вы все еще можете пройти и изменить все файлы, хотя

0 голосов
/ 16 февраля 2010

Rails жалуется, потому что вы использовали константу до ее инициализации.

puts SomeConstant
# before
SomeConstant = 10

В этом случае константа является именем класса контроллера - FriendshipsController

Проверьте правильность имени класса, т. Е. У вас есть контроллер с этим именем в каталоге app \ controller.

...