您好我正在尝试显示当前用户的朋友列表/或可能正在等待的朋友,但我收到了类似这样的错误
NoMethodError in UserFriendships#index
undefined method `each' for nil:NilClass
这是显示错误
的内容<% @user_friendships.each do |friendship| %>
这是我在控制器中的代码
before_filter :authenticate_user!
def index
@user_friendship = current_user.user_friendships.all
end
这是索引中的代码
<% @user_friendships.each do |friendship| %>
<% friend = friendship.friend %>
<div id="<%= dom_id(friendship) %>" class="friend now">
<div class="span1">
<%= link_to image_tag(friend.gravatar_url), profile_path(friend) %>
</div>
</div>
</div>
<% end %>
我已经在我的控制器中定义了@user_friendship但似乎它不能正常工作我在这里有点新鲜并且把事情放在一起,但是这个错误使我无法继续前进,如果有人可以帮助我那将是很好的!
答案 0 :(得分:1)
Rails无法在current_user上看到您定义的方法user_friendships
,因此@user_friendship是nill。
为了您的使用,您只需要直接在id
上致电current_user
,例如
@user_id = current_user.id
然后,您可以在数据库中搜索具有此特定ID的用户
@current_user = User.find(@user_id)
所以,在你的情况下,你可以获得这个新@current_user的任何方法;
def index
@user_friendship = @current_user.user_friendships.all
end
继续列表
<% @user_friendships.each do |friendship| %>
Rails是一个MVC框架,意思是模型,视图和控制器。模型主要用于实现数据库(如MYSql)和控制器之间的通信。视图基本上是用户看到的内容(如HTML,CSS),它们通过Controller进行通信和掌握所需的数据。控制器做得最多。 Controller接收来自用户的请求,通过模型将请求指向数据库,并将结果返回给视图。所有这些都是由Controller在服务器的帮助下完成的。有关Rails MVC框架和MVC的进一步说明,请查看这些链接
How are Model, View and Controller connected?
http://betterexplained.com/articles/intermediate-rails-understanding-models-views-and-controllers/
http://www.codelearn.org/ruby-on-rails-tutorial/mvc-in-rails
http://blog.codinghorror.com/understanding-model-view-controller/