gpt4 book ai didi

ruby - 其他部分不适用于 Rails ajax 形式

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:45 26 4
gpt4 key购买 nike

我有一个 Rails ajax 表单要提交。当用户提供正确的数据时,它将搜索数据库并相应地执行操作。如果用户提供了错误的数据,它应该向用户显示警告消息。但它没有发生就像那样。

我在下面解释我的代码。

home.html.erb

<% if current_admin %> 
<p class="flash-message"><%=flash[:notice]%></p>

<div class="col-md-6" style="float:none; margin:auto;">
<%= form_for :sdf ,:url => {:action => "scan_report" },remote: true do |f| %>
<% if params[:receipt_no] %>
<div class="input-group bmargindiv1 col-md-12"> <span class="input-group-addon text-left">Receipt No. Scan :</span>
<%= f.text_field :Receipt_No,:class => "form-control", :value => params[:receipt_no] %><%= f.submit "Scan Report" %>
</div>
<% else %>
<div class="input-group bmargindiv1 col-md-12"> <span class="input-group-addon text-left">Receipt No. Scan :</span>
<%= f.text_field :Receipt_No,:class => "form-control",placeholder:"Receipt No. scan" %><%= f.submit "Scan Report" %>
</div>
<% end %>
<% end %>

<% end %>

Controller /homes_contorller.rb

class HomesController < ApplicationController
def home
@sdf=TSdf.new
respond_to do |format|
format.html
format.js
end
end
def scan_report
if @sdf=TSdf.find_by_Receipt_No(params[:sdf][:Receipt_No])
if @sdf && @sdf.HCSY_Status=='YES'
@hcsy=THcsy.find_by_Sdp_Id(@sdf.Sdp_Id)
@hcsy_deatils=THcsyDetails.find_by_HCSY_ID(@hcsy.id)
@woods=THcsyFundTypeMaster.find_by_Fund_Type_Code(1)
@burn=THcsyFundTypeMaster.find_by_Fund_Type_Code(2)
@good=THcsyFundTypeMaster.find_by_Fund_Type_Code(3)
@swd=THcsyFundTypeMaster.find_by_Fund_Type_Code(5)
@photo=THcsyFundTypeMaster.find_by_Fund_Type_Code(6)
end
else
flash[:notice]="Not Found"
end
end
end

在这种形式下,它只接受正确的输入,但如果用户试图提供错误的输入,则 else 部分不会执行。请帮助我解决此错误,并让我知道如何在下面进行此 ajax 调用格式。

$('form').submit(function() {  
var valuesToSubmit = $(this).serialize();
$.ajax({
type: "POST",
url: $(this).attr('action'), //sumbits it to the given url of the form
data: valuesToSubmit,
dataType: "JSON" // you want a difference between normal and ajax-calls, and json is standard
}).success(function(json){
console.log("success", json);
});
return false; // prevents normal behaviour
});

请帮助我。我正在使用 Rails 版本 3.2.19。

最佳答案

这里向scan_report发送AJAX POST请求,如果成功则渲染模板scan_report.js.erb,渲染后的模板会出现在json变量中成功回调。

但如果参数无效,则呈现相同的模板,但缺少所有实例变量。并且可能返回空 json 或者日志中出现错误。

无论如何,如果您想以远程形式更改flash,您应该将自定义代码放入fail 回调中。有点像

$("#flash").html('<%= j render flash[:notice] %>');

关于ruby - 其他部分不适用于 Rails ajax 形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29741316/

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