【问题标题】:rails 4.1 undefined method for nil class用于 nil 类的 rails 4.1 未定义方法
【发布时间】:2015-03-06 12:04:51
【问题描述】:

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

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,但它似乎无法正常工作!

【问题讨论】:

    标签: ruby-on-rails-4.1


    【解决方案1】:

    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 框架,意思是模型、视图和控制器。模型主要是实现数据库(如 MYSql)和控制器之间的通信。视图基本上是用户所看到的(如 HTML、CSS),它们通过控制器交流和掌握所需的数据。控制器做的工作最多。 Controller 接收来自用户的请求,通过模型将请求指向数据库,并将结果返回给视图。所有这些都是由控制器在服务器的帮助下完成的。有关 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/

    【讨论】:

    • 您好,请您详细说明一下,因为我仍在正确学习 Rails,所以控制器和模型仍然让我感到困惑
    • 我刚刚在答案@user1868185 中添加了更多内容。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2014-02-13
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    相关资源
    最近更新 更多