gpt4 book ai didi

jquery - 带有 Rails 的 format.js

转载 作者:行者123 更新时间:2023-12-01 03:57:02 25 4
gpt4 key购买 nike

所以我有销毁命令。问题是我不希望我的用户能够删除此类别(如果它包含项目)。所以我的 destroy 方法中有一个 if 语句。这一切都很好,但我使用 AJAX 来不加载页面并使用 destroy.js.erb 文件。我的方法如下:

def destroy
@promotion_type = PromotionType.find(params[:id])

if Promo.find_by_promotion_type_id(params[:id]).nil?
@promotion_type.destroy

respond_to do |format|
format.html { redirect_to(promotion_types_url) }
format.js {render :layout => false }
format.xml { head :ok }
end
else
respond_to do |format|
format.js {}
end
end
end

这是我的 javascript(jquery):

$('a.delete').click (function(){
if(confirm("Are you sure?")){
var row = $(this).closest("tr").get(0);
$.post(this.href, {_method:'delete'}, null, "script");
$(row).hide();
return false;
} else {
//they clicked no.
return false;
}

我的问题之一是,一旦他们单击"is",它就会隐藏该行,并且 AJAX 会删除它。如果我不隐藏它,它就会被删除,但由于页面不刷新,看起来它没有被删除,所以我将其隐藏以达到效果。这个解决方案的唯一问题是当我进入我的类别时。如果它里面有项目,我不希望用户删除它。我无法将 ruby​​ 代码放入我的 javascript 文件中,并且我无法(或不知道如何)将 javascript 变量或 $(this) 放入 .js.erb 文件中。

代码在大部分情况下都能正确运行,但即使未能删除该行,它现在也会隐藏该行。所以我要抛出一个警报('无法删除');到我的 .js.erb 文件中,但无论它是否被删除,该警报都会触发。我确信有更好的解决方案来完成这一切,但我不知道。

最佳答案

就像 geowa4 说的,你可以执行以下操作

 $('a.delete').click (function(){
if(confirm("Are you sure?")){
var row = $(this).closest("tr").get(0);
$.post(
this.href,
{_method:'delete'},
function(data){$(row).hide();},
"script"
);
// Move from here to the callback
//$(row).hide();
return false;
} else {
//they clicked no.
return false;
}
}

作为替代方案,您可以简单地将 JS“隐藏”代码与警报一起放在 .js.erb 文件中。您还需要将变量 (@destroyed) 传递给 erb,然后使用天气的 if 语句来根据 @destroyed 变量触发警报。

def destroy
@promotion_type = PromotionType.find(params[:id])

if Promo.find_by_promotion_type_id(params[:id]).nil?
@deleted = true
@promotion_type.destroy

respond_to do |format|
format.html { redirect_to(promotion_types_url) }
format.js {render :layout => false }
format.xml { head :ok }
end
else
@deleted = false
respond_to do |format|
format.js {}
end
end
end

关于jquery - 带有 Rails 的 format.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1268383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com