NoMethodError未定义的方法“ []”,用于nil:NilClass

时间:2018-08-18 16:07:26

标签: ruby-on-rails ruby

我有问题。创建关注作者时,出现错误:

NoMethodError in FollowsController#create_author

undefined method `[]' for nil:NilClass

这是路线

Rails.application.routes.draw do
 resources :follows, only: %i(create destroy create_author destroy_author)
 post "/follows/create_author", to: "follows#create_author", as: :create_author
 delete "/follows/destroy_author/:id", to: "follows#destroy_author", as: :destroy_author
end

这是表格

<%= form_for(@follow, as: :create_author, url: create_author_path, remote: true) do |f| %>
  %= f.hidden_field :user_id, value: current_user.id if current_user != nil %>
  <%= f.hidden_field :type_follow, value: "author" %>
  <%= f.hidden_field :follower_id, value: @author.id %>
  <%= f.submit t(".submit"), id: "follow", class: "btn btn-primary" %>
   

这是控制器 enter link controller here

请帮助:(谢谢!

1 个答案:

答案 0 :(得分:0)

在发布这样的错误时,如果您要包括行号和至少一些堆栈跟踪信息,将有助于我们弄清楚。没有这些,我们将无济于事。

也就是说,在控制器中使用[]的地方是find_userfind_author方法的底部。具体来说,您需要params[:follow][:follower_id]。如果params[:follow]为nil,那么您得到的错误将是有道理的。

要做的事。

  • 在rails日志中验证您认为要发送到控制器的参数实际上已经发送。

  • 调整这两种方法以使用follow_params而不是params

祝你好运!