使用Rails 3重定向到同一页面

时间:2015-05-01 10:29:12

标签: ruby ruby-on-rails-3.2

我需要在用户操作完成后使用Rails 3完全保持页面相同。我正在解释下面的代码和代码流。

  

home.html.erb:

  <div class="col-md-6" style="float:none; margin:auto;">
        <%= form_for :sdf ,:url => {:action => "scan_report" },:html => {:id =>"form-id" } ,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],:id => "scan-field",:onfocus => ("$('#rcd_btn').submit()") %>
        </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" %>
        </div>
        <% end %>
        <%= f.submit "Submit",:id => "rcd_btn",:style => "display:none;" %>
        <% end %>
        <div class="clearfix"></div>
    </div>
<div class="block block-themed" style="display:none" id="whole-div6" >
    <div class="block-title">
        <div class="block-options">
            <a href="javascript:void(0)" class="btn btn-option enable-tooltip active" data-toggle="block-collapse" title="Toggle block's content"><i class="fa fa-arrow-down"></i></a>
        </div>
            <h4>Wood Slip</h4>
    </div>
    <div id="wood-puri">

    </div>
</div>

从上面的表格中,当用户将收据拒绝时,让我们说150325006/1并按回车键,将显示以下页面。

  

_wood.html.erb:

<div class="block-content" style="display:none;">
        <div class="timeline-container">
              <div class="input-group bmargindiv1 col-md-6 pull-left"><span class="input-group-addon text-left"><div class="leftsidetextwidth">Receipt No :</div></span>
                <input type="text" class="form-control" value= "<%= @sdf.Receipt_No %>"> 
              </div>
              <div class="input-group bmargindiv1 col-md-6 pull-left"><span class="input-group-addon text-left"><div class="leftsidetextwidth">Date &amp; Time :</div></span>
                <input type="text" class="form-control" value= "<%= @sdf.Created_On %>"> 
              </div>
              <div class="input-group bmargindiv1 col-md-6 pull-left"><span class="input-group-addon text-left"><div class="leftsidetextwidth">Deceased Name :</div></span>
                <input type="text" class="form-control" value= "<%= @hcsy.Deceased_Name %>"> 
              </div>
              <div class="input-group bmargindiv1 col-md-6 pull-left"> <span class="input-group-addon text-left"><div class="leftsidetextwidth">Donor Name :</div></span>
                <input type="text" class="form-control" value= "<%= @sdf.Doner_Name %>"> 
              </div>
              <div class="input-group bmargindiv1 col-md-12 pull-left"> <span class="input-group-addon text-left"><div class="leftsidetextwidth">Amount :</div></span>
                <input type="text" class="form-control" value= "<%= @woods.Amount %>">
              </div>
              <div class="clearfix"></div>
        </div>
        <div class="block block-themed themed-asphalt">
      <div class="block-title"><h5>Office Use</h5></div>
            <div class="block-content full">
               <%= form_for :vendor,:url => {:action =>"payment" } do |f| %>
                    <div class="totalaligndiv">
                      <div class="input-group bmargindiv1 col-md-6" style="margin:auto; float:none;"><span class="input-group-addon text-left"><div class="leftsidetextwidth">Select Vendor :</div></span>
                      <%= f.select(:v_name,options_for_select(Vendor.where(s_catagory:  "Woods").pluck(:v_name),selected: "Select vender name"),{},{:class => "form-control",:prompt => 'Selected Vendor'}) %>
                      </div>
                       <div class="totalaligndiv">
                         <%= f.hidden_field :receipt_no, :value => @sdf.Receipt_No %>
                      </div>
                      <div class="totalaligndiv">
                         <%= f.hidden_field :amount,:value => @woods.Amount %>
                      </div>
                      <div class="totalaligndiv">
                         <%= f.hidden_field :date,:value =>@sdf.Created_On %>
                      </div>
                      <div class="clearfix"></div>
                      <div class="tbpaddingdiv1 text-center">
                        <%= f.submit "Add to Payment",:class => "btn btn-success" %>
                      </div>
                      <div class="clearfix"></div>
                </div>
                <% end %>
            </div>
        </div>
    </div>

从上面的页面中,用户将选择一个供应商名称,当用户点击提交按钮时,数据库操作将发生,用户将保持在之前显示的同一页面上(即用户将留在_woods.html.erb上)页面也提交后)按下提交按钮,“添加到付款”消失,直到下一个收据没有扫描。我的控制器文件如下。

  

homes_controller.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])
                @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)
                @vendor=Vendor.new
                flash[:notice]=" number matched"
            else
                splitted = params[:sdf][:Receipt_No].split('/')
                receipt = splitted[0]
                table_id = splitted[1]
                @sdfs=TSdf.find_by_Receipt_No(receipt)
                if @sdfs
                    @hcsys=THcsy.find_by_Sdp_Id(@sdfs.Sdp_Id)
                    @fund_details=THcsyFundTypeMaster.find_by_Fund_Type_Code(table_id)
                else
                    flash[:notice]="Scan number not found"
                end
            end
    end
    def payment
        @adds=THcsyFundTypeMaster.find_by_Amount(params[:vendor][:amount])
        @vendor=PaymentVendor.create(:Receipt_No => params[:vendor][:receipt_no],:c_date => Date.today.to_time_in_current_zone,:v_date => params[:vendor][:date],:v_amount => params[:vendor][:amount],:v_catagory => @adds.Fund_Type_Name,:v_name => params[:vendor][:v_name],:v_status => "No" )
        if @vendor
            flash[:notice]="Vendor added the payment"
            flash[:color]="valid"
            redirect_to :action => "home"
        else
            flash[:alert]="vendor could not added the payment"
            flash[:color]="invalid"
            render 'home'
        end
    end
end
  

scan_report.js.erb:

<% if @fund_details.Fund_Type_Name=="Woods" %>
            $("#whole-div6").css("display", "block");
            $("#wood-puri").html("<%= escape_javascript (render 'woods' ) %>");
            $("#wood-puri").slideDown(350); 
        <% end %> 

此处内部付款操作现在我正在重定向主页。但是我需要用户在点击添加到付款按钮后留在呈现_wood.html.erb:页面。请帮助我。

1 个答案:

答案 0 :(得分:0)

你有没有尝试过:回来?即在控制器中

respond_to do |format|
  format.html { redirect_to :back }
end

它将重定向到请求到达的页面。