未初始化的常量与铁路友谊

时间:2010-02-16 03:14:22

标签: ruby-on-rails ruby constants initialization

我是rails的新手并收到以下错误:

NameError in FriendshipsController#create  
uninitialized constant FriendshipsController

这也出现了:

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

点击我的用户显示页面上的“添加好友”链接。我正在跟踪有关T的自引用关联的railscast,但我一直收到此错误,我找不到任何有关它的信息,甚至没有“未初始化的常量”的含义。我从互联网上收集到它可能与acts_as_authenticated插件有关,但是我按照我找到的一个修复程序进行了操作,但它没有用。

以下是我的user / 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 个答案:

答案 0 :(得分:1)

很难说。你应该发布你的类的顶部...需要,类定义,包括,以及你的方法以外的任何其他东西,以及创建方法。

答案 1 :(得分:0)

Rails抱怨是因为你在初始化它之前使用了一个常量。

puts SomeConstant
# before
SomeConstant = 10

在这种情况下,常量是控制器类名 - FriendshipsController

检查类名是否正确,即您的app \ controller目录中有一个具有该名称的控制器。

答案 2 :(得分:0)

我想你跑了     rails g controller Friendship

虽然你应该使用     rails g controller Friendships

这就是为什么所有文件现在都是单数的 您仍然可以浏览并更改所有文件