在Michael Hartl的精湛教程的listing 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| %>
但是当“Follow”表单尝试加载时,它可能不再可用了吗?
我已经尝试了很长时间来追踪这一点,但我无法弄清楚,而且我还没有看到其他人发布同样的问题。
任何线索?
感谢。
答案 0 :(得分:0)
我不确定但是如果异步调用有效并且从数据库中成功删除了以下用户引用,则引用的@user指向nil,因为该引用刚被删除?
答案 1 :(得分: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
答案 2 :(得分:0)
Agh ......愚蠢的错误。
我已经将app / views / relationships / create.js.erb的代码复制到了app / views / relationships / destroy.js.erb中。复制并粘贴错误。
抱歉是误报。谢谢你的时间。