rails 4.1 nil 的未定义方法 class

rails 4.1 undefined method for nil class

您好,我正在尝试显示当前用户的好友列表/或可能待定的好友,但我遇到了这样的错误

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,但它似乎无法正常工作我在这里有点新,正在整理东西,但这个错误让我无法继续前进,如果有人可以的话帮帮我就好了!

Rails 在 current_user 上看不到您定义的方法 user_friendships,因此 @user_friendship 为空。

为了您的使用,您只需要直接在 current_user 上调用 id,例如

@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框架,意思是Models, Views, and Controllers。模型主要用于实现数据库(如 MYSql)和控制器之间的通信。视图基本上就是用户所看到的(如HTML、CSS),它们通过控制器进行通信并掌握所需的数据。 Controller 做的工作最多。控制器接收来自用户的请求,通过模型将请求指向数据库,并将结果 returns 指向视图。这些都是Controller在Server的帮助下完成的。有关 Rails MVC 框架和 MVC 的进一步说明,请查看这些链接

How are Model, View and Controller connected?

What is MVC in Ruby on Rails?

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/