Ruby:未定义的方法`find_by_username'

时间:2016-08-06 15:17:20

标签: html ruby erb

我一直在关注教程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>

我现在已经乱七八糟了,无法解决这个问题。任何帮助,将不胜感激。随意请求更多代码等。

2 个答案:

答案 0 :(得分:2)

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

内部控制器:

@user = User.find_by(username: username)

答案 1 :(得分:0)

在Rails 4之后,find_by_...方法已弃用,因此User.find_by_username不适用于Rails 4及更高版本。您应该能够使用:

User.find(id)

User.where(:username=> username)