小编Tay*_*lor的帖子

跟随Michael Hartl的Rails教程中的功能

我正在尝试实现Hartl的RoR教程第12章中的关注者功能。

我具有该功能,可以登录,进入另一个用户个人资料,单击“关注”,并且(在刷新页面后)看到我现在正在关注他们。跟不上。

但是,我的集成测试失败,Ajax不起作用,并且当我单击关注或取消关注时,我在Rails服务器日志中收到此错误:

Rendered users/_follow.html.erb (1.7ms)
Rendered relationships/destroy.js.erb (2.5ms)
Completed 500 Internal Server Error in 17ms
NoMethodError - undefined method `id' for nil:NilClass:
Run Code Online (Sandbox Code Playgroud)

我的代码完全符合Hartl的要求(我认为)。但是,我在用户模型和Devise上使用FriendlyID,其中之一(可能是FriendlyID)引起了问题。

我相信这是所有相关的代码。

任何想法将不胜感激...现在大约在第5小时!

controllers / users_controller.rb

def following
@title = "Following"
@user  = User.friendly.find(params[:id])
@users = @user.following
render 'show_follow'
end

def followers
@title = "Followers"
@user  = User.friendly.find(params[:id])
@users = @user.followers
render 'show_follow'
end
Run Code Online (Sandbox Code Playgroud)

控制器/relationships_controller.rb

def create
user = User.friendly.find(params[:followed_id])
current_user.follow(user)
respond_to do |format|
  format.html { redirect_to @user }
  format.js
 end
end

def destroy
user = Relationship.find(params[:id]).followed …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails friendly-id devise ruby-on-rails-3

1
推荐指数
1
解决办法
787
查看次数