Ruby on rails 销毁子记录会销毁父记录
编辑:我解决了我的问题。我没有使用类型“DELETE”AJAX调用,而是使用类型“POST”调用,{:method:'DELETE'}作为其数据值。这似乎奏效了。 我试图通过AJAX请求删除Rails 4中的一个子元素,我遇到了这个问题。我有一个徽章模型,其中有许多徽章元素。BadgeElements控制器包含一个销毁方法,我知道该方法有效,因为在我的Show视图中,元素被正确删除。当我试图用AJAX在JavaScript文件中删除它们时,我遇到了麻烦。这是我的密码:Ruby on rails 销毁子记录会销毁父记录,ruby-on-rails,ajax,parent-child,destroy,Ruby On Rails,Ajax,Parent Child,Destroy,编辑:我解决了我的问题。我没有使用类型“DELETE”AJAX调用,而是使用类型“POST”调用,{:method:'DELETE'}作为其数据值。这似乎奏效了。 我试图通过AJAX请求删除Rails 4中的一个子元素,我遇到了这个问题。我有一个徽章模型,其中有许多徽章元素。BadgeElements控制器包含一个销毁方法,我知道该方法有效,因为在我的Show视图中,元素被正确删除。当我试图用AJAX在JavaScript文件中删除它们时,我遇到了麻烦。这是我的密码: function dele
function deleteElement(id) {
var path_root = $('form').attr('action');
var delete_path = path_root + "/badge_elements/" + id;
$.ajax({
url: delete_path,
type: 'DELETE'
});
$('form').load(path_root + "/edit form");
}
delete_path属性的计算结果为/badges/[badge_id]/badge_elements/[id],其中[id]是相关特定元素的id。当执行此函数时,在以/badges结尾的路径处出现400错误,这告诉我正在删除徽章本身。我可以通过重新加载页面并获得错误“找不到Badge_id=4的Badge”等来确认这一点。以下是BadgeElement的模型和销毁方法,以供参考:
badge_element.rb:
class BadgeElement < ActiveRecord::Base
belongs_to :badge
belongs_to :font
scope :front, -> {where(side:"front")}
scope :back, -> {where(side:"back")}
validates :font_id, presence: true
end
有人知道发生了什么事吗?谢谢 我刚刚遇到了这个问题 如果您的控制器有一个
重定向到
且对请求的格式不敏感,它将按照指示重定向到徽章路径(徽章)
,但方法仍然是删除,从而删除父级和子级
我想你只需要像这样对块进行响应
def destroy
...
respond_to do |format|
format.html { redirect_to badge_path(badge) }
format.js { }
end
end
将模型关联
和销毁徽章元素的动作
添加到您的任务中如果您确认,路径根为“badge/:id”,仅此而已?只需在js中输入console.log(path_root)。我有一种感觉,在你的道路上有一些额外的东西,比如#或。另外,如果您可以显示开发日志的尾部,看看它是否确实得到了对控制器的ajax调用,参数是什么,以及是否有任何参数errors@PavelS是的,我能。我肯定我找到了正确的道路。在我最后一次尝试时,我得到了/badges/7/badge_元素/493@emcanes我的开发日志显示从badges controller处理的对badges/7的删除请求。这显然是个问题,但我不知道为什么会这样,因为我的道路应该是正确的。
def destroy
...
respond_to do |format|
format.html { redirect_to badge_path(badge) }
format.js { }
end
end