【问题标题】:Ruby: undefined method `find_by_username'Ruby:未定义的方法“find_by_username”
【发布时间】:2016-08-06 15:17:20
【问题描述】:

我一直在学习 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>

用户.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>

我已经搞砸了很多年,但无法解决。任何帮助,将不胜感激。随时询问更多代码等。

【问题讨论】:

  • 您可以发布User 模型的架构/迁移文件吗?
  • 请注意,您正在尝试根据用户名查找用户,但您传递的是 id User.find_by_username(params[:id]。不过,这可能不是您的错误的原因。

标签: html ruby erb


【解决方案1】:

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

内部控制器:

@user = User.find_by(username: username)

【讨论】:

    【解决方案2】:

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

    User.find(id)
    

    User.where(:username=> username)
    

    【讨论】:

      猜你喜欢
      • 2019-12-25
      • 2010-10-15
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 2015-10-11
      • 2016-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多