Rails部署在Heroku未定义的方法`[]'为nil:NilClass处理params

时间:2012-07-02 05:58:28

标签: ruby-on-rails heroku

我在Heroku上部署了一个Rails应用程序。它是许多样本中提供的Twitter应用程序。我试图学习如何git部署在Heroku上的Rails应用程序。无论如何,当点击follow按钮时,没有任何反应。我使用heroku logs并发现这是问题所在:

NoMethodError (undefined method `[]' for nil:NilClass):
app/controllers/user_relationships_controller.rb:6:in `create'

传递的参数是:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"NIiiOgQ4iowSxezGmvLk3oV/vul+4ysWoFrgh/1eOAY=", "user_id"=>{"follower_id"=>"1"}, "commit"=>"follow"}

这对应于这一行:

@user = User.find(params[:user_id][:follower_id])

有人可以指出我正确的方向吗?谢谢!

根据要求:

<%= form_for current_user.user.build(:follower_id => @user.id), 
         :remote => true do |f| %>
<div><%= f.hidden_field :follower_id %></div>
<div class="actions"><%= f.submit "follow" %></div>
<% end %>

$('#follow_form').replaceWith("<%= escape_javascript render(:file =>'users/_follow_form') %>");
$('#followers').replaceWith('<div id="followers"><h1><%= "Followers: #{@user.followers.count}" %></h1></div>');

2 个答案:

答案 0 :(得分:0)

有关如何获取更多信息并弄清楚发生了什么的一些建议:

  1. 证明它在本地运作。这似乎不是一个特定于heroku的问题。
  2. 找出你从中获得这个教程的教程,因为在一个示例中可能存在语法错误,该示例已在该站点的注释中得到修复或突出显示。 (我们还没有足够的信息来帮助你)
  3. 添加一些日志记录,在电话会议之前打印出params。
  4. 将您的代码作为公共github存储库推送,并在此处链接回来。然后我们可以查看您的代码并运行它以查看问题所在。

答案 1 :(得分:0)

我非常抱歉打扰了你。无论出于何种原因,我有两个名字非常相似的控制器。它使用了错误的,我没有意识到。我切换了代码,现在它可以工作了。感谢您的投入!