当我访问未登录应用程序的用户个人资料页面时,我的应用程序出现以下错误(我正在使用 Devise):
UsersController 中的 NoMethodError #show undefined method `connections' for nil:NilClass
app/controllers/users_controller.rb:19:in `show'
当我登录时,错误消失了。我知道为什么它失败了。我只需要帮助提出正确的解决方案。
错误发生在我的用户控制器中的这一行:
def show
@connection = current_user.connections.build(user_id: current_user, otheruser_id: @user)
end
登录到应用程序的用户会出现一个连接表单(简单地说,会出现一个按钮,询问您是否愿意将此人作为朋友联系)。<% if user_signed_in? %>
但是,我正在检查用户是否在表单之前的用户视图“显示”页面上登录。
这是视图中的相关代码:
<%= render 'connect_form' if user_signed_in? %>
连接表格
<% unless current_user == @user %>
<% if @contact.present? && user_signed_in? %>
<%= @user.first_name %> is your <%= @contact.description %> (<%= link_to "edit contact", edit_connection_path(:id => @contact.id, :user => @user) %>)<br \>
<% else %>
<% if user_signed_in? %>How do you know <%= @user.first_name %>? (<%= link_to "edit contact", new_connection_path(:user => @user) %> )
<% else %>
<% end %><br \>
<% end %>
<% end %>
connection_form(创建一个新的)
<% if user_signed_in? %>
How do you know <%= @user.first_name %>?
<%= form_for(@connection) do |f| %>
<%= f.collection_select :description, Connection::CONNECTIONTYPE, :to_s, :to_s, :include_blank => true %>
<%= f.hidden_field(:otheruser_id, :value => @user.id) %>
<%= f.submit "Save", class: "btn btn-primary btn-small" %>
<% else %>
<% end %>
为什么即使我检查了 user_signed_in,我的应用程序仍试图加载 nil 数组`@connections?任何帮助是极大的赞赏!!