其他部分无法以 Rails ajax 形式工作
Else part is not working in Rails ajax form
我有一个 Rails ajax 表单 submit.When 用户将提供正确的数据,它将搜索数据库并执行操作 accordingly.If 用户提供了错误的数据它应该向用户显示数据以提醒用户 message.But 它不是那样发生的。
我在下面解释我的代码。
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
在这种形式下,它只接受正确的输入,但如果用户试图提供错误的输入,则其他部分不是 executing.Please 帮助我解决这个错误并让我知道我该如何做到这一点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
});
请帮助 me.I 我正在使用 Rails 版本 3.2.19。
这里向scan_report发送AJAXPOST请求,如果成功则渲染模板scan_report.js.erb
,渲染后的模板会出现在[=12] =] success
回调中的变量。
但如果参数无效,则呈现相同的模板,但缺少所有实例变量。并且可能返回空 json 或者日志中出现错误。
无论如何,如果您想以远程形式更改 flash
,您应该将自定义代码放入 fail
回调中。像
$("#flash").html('<%= j render flash[:notice] %>');
我有一个 Rails ajax 表单 submit.When 用户将提供正确的数据,它将搜索数据库并执行操作 accordingly.If 用户提供了错误的数据它应该向用户显示数据以提醒用户 message.But 它不是那样发生的。
我在下面解释我的代码。
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
在这种形式下,它只接受正确的输入,但如果用户试图提供错误的输入,则其他部分不是 executing.Please 帮助我解决这个错误并让我知道我该如何做到这一点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
});
请帮助 me.I 我正在使用 Rails 版本 3.2.19。
这里向scan_report发送AJAXPOST请求,如果成功则渲染模板scan_report.js.erb
,渲染后的模板会出现在[=12] =] success
回调中的变量。
但如果参数无效,则呈现相同的模板,但缺少所有实例变量。并且可能返回空 json 或者日志中出现错误。
无论如何,如果您想以远程形式更改 flash
,您应该将自定义代码放入 fail
回调中。像
$("#flash").html('<%= j render flash[:notice] %>');