其他部分无法以 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] %>');