Ruby: 未定义的方法“find_by_username”

Ruby: undefined method `find_by_username'

我一直在学习教程 Follower Tutorial,但我一直收到该行的未定义方法“find_by_username”错误。

<%= render '/components/follow_button', :user => User.find_by_username(params[:id]) %>

show.html.erb

    <%= render '/components/follow_button', :user => User.find_by_username(params[:id]) %>
            <div class="panel panel-default">
              <div class="panel-body">
                 <h5 style="color: grey; font-size: 125%;">Who to follow</h5>
                 <% for @u in @toFollow do %>
                   <p style="font-weight: bold; opacity: 0.85;" ><a href="/user/<%= @u.username %>"><%= @u.username %></a></p>
                 <% end %>
              </div>
            </div>

user.rb

  def unfollow(other)
active_relationships.find_by(followed_id: other.id).destroy

_follow_button.html.erb

<% if current_user.id != user.id %>
<div class="panel panel-default">
    <div class="panel-body">
        <center>
            <% if !current_user.following?(user) %>
                <%= form_for(current_user.active_relationships.build) do |f| %>
                    <div><%= hidden_field_tag :followed_id, user.id %></div>
                    <%= f.submit "Follow", class: "btn btn-primary" %>
                <% end %>
            <% else %>
                <%= form_for(current_user.active_relationships.find_by(followed_id: user.id),
                    html: { method: :delete }) do |f| %>
                    <%= f.submit "Unfollow", class: "btn" %>
                <% end %>
            <% end %>
        </center>
    </div>
</div>

我胡思乱想了好久,一直搞不定。任何帮助,将不胜感激。欢迎索取更多代码等

从 Rails 4 开始,find_by_... 方法已弃用,因此您的 User.find_by_username 不适用于 Rails 4 及更高版本。您应该可以使用:

User.find(id)

User.where(:username=> username)

在较新版本的 rails 中,您应该使用以下代码:

内部控制器:

@user = User.find_by(username: username)