0

在Michael Hartl 的精湛教程的清单 11.36中,将取消关注表单更改为使用 AJAX,但是当我单击“取消关注”按钮时,我不断收到以下错误:

ActionView::Template::Error (undefined method `model_name' for NilClass:Class):

然而,这种形式确实有效。如果我单击“取消关注”,我将取消关注当前显示的用户。所以看起来表单声明中的@user在表单提交时是有效的:

<%= form_for(current_user.relationships.find_by_followed_id(@user),
         html: { method: :delete },
         remote: true) do |f| %>

但是当“关注”表单尝试加载时,它可能不再可用?

我已经尽力追查这个问题,但我无法弄清楚,而且我还没有看到其他人发布同样的问题。

有什么线索吗?

谢谢。

4

3 回答 3

0

我不确定,但如果异步调用有效并且以下用户引用已成功从数据库中删除,则引用的@user 指向 nil 导致此引用刚刚被删除?

于 2012-10-26T21:50:45.393 回答
0

您是否在关系控制器中定义了以下操作?

def destroy
    @user = Relationship.find(params[:id]).followed
    current_user.unfollow!(@user)
    respond_to do |format|
      format.html { redirect_to @user }
      format.js
    end
  end
于 2012-10-26T21:57:26.223 回答
0

啊……愚蠢的错误。

我也将 app/views/relationships/create.js.erb 的代码复制到了 app/views/relationships/destroy.js.erb 中。复制粘贴错误。

很抱歉误报。谢谢你的时间。

于 2012-10-26T21:59:17.573 回答