有关Ajax搜索导轨的问题

穆罕默德·亚辛(Muhammad Yaseen)

我尝试使用Ajax构建搜索,并添加了remote:true和response_以阻止控制器,然后创建了部分_xvaziri.html.erb并最终创建了index.js.erb。

但是我没有得到Ajax搜索所需的结果。

请参考下图所示的图像;

screenshot.png

在上图中,当我搜索“现金”时,我在终端中多次渲染。

screenshot2.png

index.html.erb

<% @balance = 0 %>


     <div class="row">

    <div class="col-md-10 col-md-offset-1">

        <div class="table-responsive myTable">

            <table class="table listing text-center">
                <tr class="tr-head">
                    <td>Date</td>
                    <td>Description</td>
                    <td>Amount</td>
                    <td>Discount</td>
                    <td>Paid</td>
                    <td>Balance</td>
                </tr>

                <tr>
                    <td></td>
                </tr>


                <a href="#" class="toggle-form" style="float: right;" >Search</a>

                <div id="sample">

                <%= form_tag xvaziris_path, remote: true, method: :get, class: "form-group", role: "search" do %>
                <p>
                    <center><%= text_field_tag :search, params[:search], placeholder: "Search for.....", autofocus: true, class: "form-control-search" %>
                        <%= submit_tag "Search", name: nil, class: "btn btn-md btn-primary" %></center>
                    </p>
                    <% end %><br>
  </div>
                        <% if @xvaziris.empty? %>

                        <center><p><em>No results found.</em></p></center>              

                        <% end %>

                        <%= render @xvaziris %>

                    </table>
                </div>
            </div>
        </div>

_xvaziri.html.erb

<tr  id = "kola" class="tr-<%= cycle('odd', 'even') %>">

    <td class="col-1"><%= xvaziri.date.strftime('%d/%m/%Y') %></td>
    <td class="col-3"><%= span_with_possibly_red_color xvaziri.description %></td>


    <td class="col-1"><%= number_with_precision(xvaziri.amount, :delimiter => ",", :precision => 2) %></td>

    <td class="col-1 neg"><%= number_with_precision(xvaziri.discount, :delimiter => ",", :precision => 2) %></td>

    <td class="col-1 neg"><%= number_with_precision(xvaziri.paid, :delimiter => ",", :precision => 2) %></td>


    <% @balance += xvaziri.amount.to_f - xvaziri.discount.to_f - xvaziri.paid.to_f %>

    <% color = @balance >= 0 ? "pos" : "neg" %>

    <td class="col-1 <%= color %>"><%= number_with_precision(@balance.abs, :delimiter => ",", :precision => 2) %></td>

</tr>

xvaziris_controller.rb

class XvazirisController < ApplicationController

    before_action :set_xvaziri, only: [:show, :edit, :update, :destroy]


    def index
        @xvaziris = Xvaziri.where (["description LIKE ? OR amount LIKE ? OR paid LIKE ?", "%#{params[:search]}%","%#{params[:search]}%","%#{params[:search]}%"]) 
        respond_to do |format|
            format.js
            format.html
        end 
    end

    def import
        Xvaziri.import(params[:file])
        redirect_to xvaziris_url, notice: "Xvaziris imported."
    end

    def show
    end

    def new
        @xvaziri = Xvaziri.new
    end

    def create
        @xvaziri = Xvaziri.new(xvaziri)
        if
            @xvaziri.save
            flash[:notice] = 'Xvaziri Created'
            redirect_to @xvaziri
        else
            render 'new'
        end
    end

    def edit
    end

    def update
        if @xvaziri.update(xvaziri)
            flash[:notice] = 'Xvaziri Updated'
            redirect_to @xvaziri
        else
            render 'edit'
        end

    end

    def destroy
        @xvaziri.destroy
        flash[:notice] = 'Xvaziri was successfully destroyed.'
        redirect_to xvaziris_url    
    end

    private
    # Use callbacks to share common setup or constraints between actions.
    def set_xvaziri
        @xvaziri = Xvaziri.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def xvaziri
        params.require(:xvaziri).permit(:date, :description, :amount, :discount, :paid)
    end

end

index.js.erb

<% @balance = 0 %>
    <% @xvaziris.each do |xvaziri| %>
      $('#kola').append("<%= j render xvaziri %>");
    <% end %>

我应该如何编写以上代码才能在xvaziris#index中找到搜索?

其次,当搜索为nil,空白或空时,我想显示未找到任何结果。我编写了以下代码,但它不起作用。

<% if @xvaziris.empty? %>

      <center><p><em>No results found.</em></p></center>              

 <% end %>

任何建议都是最欢迎的。

先感谢您。

穆罕默德·亚辛(Muhammad Yaseen)

我修改了我的index.html和index.js.erb如下:

<% @balance = 0 %>


<div class="row">

    <div class="col-md-10 col-md-offset-1">

        <div class="table-responsive myTable">

            <table id = "kola" class="table listing text-center">
                <thead>
                    <tr class="tr-head">
                        <td>Date</td>
                        <td>Description</td>
                        <td>Amount</td>
                        <td>Discount</td>
                        <td>Paid</td>
                        <td>Balance</td>
                    </tr>
                </thead>

                <a href="#" class="toggle-formed" style="float: right;" ><strong>Search</strong></a>

                <div id="sample">

                    <%= form_tag xvaziris_path, remote: true, method: :get, class: "form-group", role: "search" do %>
                    <p>
                        <center><%= text_field_tag :search, params[:search], placeholder: "Search for.....", autofocus: true, class: "form-control-search" %>
                            <%= submit_tag "Search", name: nil, class: "btn btn-md btn-primary" %></center>
                        </p>
                        <% end %><br>
                    </div>


                    <tbody>              
                        <%= render @xvaziris %>
                    </tbody>
                </table>
            </div>
        </div>
    </div>

index.js.erb

<% @balance = 0 %> 
$('#kola tbody').empty(); 
<% @xvaziris.each do |xvaziri| %> 
$('#kola tbody').append("<%= j render xvaziri %>"); 
<% end %>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章