这是完美的工作,现在我不知道发生了什么。
错误如下:
ActiveRecord::RecordNotFound at /status_updates/92
Couldn't find User with id=92
和
ActiveRecord::RecordNotFound at /status_updates/delete_all
Couldn't find User with id=delete_all
发生的情况是,我的用户有很多状态更新。这里应该指属于这个用户的状态更新。
我没有改变任何与此直接相关的代码,所以我怀疑它与我试图对我的咖啡脚本进行的更改有关。(我从我的gem文件中删除了它,运行bundle install,然后决定尝试不删除它,所以我把它放回gem文件中,再次运行bundle install…)
无论如何,错误发生时,我在show.html中,我点击我的删除按钮。对于单个status_update,可以使用delete_all或delete。
这里是所有这些的控制器方法我根本没有改变:
def show
@user = User.find(params[:id])
@status_updates = @user.status_update
end
def destroy
@status_update.destroy
flash[:success] = "Status update deleted!"
redirect_to status_update_path(current_user.id)
end
def delete_all
@all_status_updates = current_user.status_update
@all_status_updates.delete_all
flash[:success] = "All status updates deleted!"
redirect_to status_update_path(current_user.id)
end
在我的控制台中,我可以查找这个用户并检查它的状态更新,并且状态更新都在那里,正如我所期望的那样。这是件好事。
但是ActiveRecord突然找不到它们??
哦是的. .下面是关于delete_all按钮的status_updates的gem文件
resources :status_updates do
collection do
delete :delete_all
end
end
删除按钮看起来像这样:
<%= link_to "delete", status_update, method: :delete %>
<%= link_to "Reset Log", delete_all_status_updates_path, method: :delete, data: { confirm: "Are you sure? Once this log is reset there is no going back!"}%>
我把它们放在那里是为了展示它们的路径。
这应该教会我编写测试并将所有工作推送到git,而不是不安全地运行:/
谢谢!
你的第一个问题是很可能你没有正确启用javascript。在Rails中,delete
方法是通过javascript完成的。确保在布局和application.js
中正确包含所有js文件。你需要有一个原型或jquery。