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