【问题标题】:Implement rails ajax search in rails 4.2.0在 rails 4.2.0 中实现 rails ajax 搜索
【发布时间】:2016-07-13 13:19:50
【问题描述】:

我想在我的 Rails 应用程序中实现 ajax 搜索。那么我该如何处理我定义的代码。

我想根据描述、支付金额等进行搜索。

为了更好地理解,请跟随图片;

index.html.erb

 <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.....", class: "form-control-search" %>
                        <%= submit_tag "Search", name: nil, class: "btn btn-md btn-primary" %></center>
                    </p>
                    <% end %><br>

                    <% if @xvaziris.empty? %>

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

                    <% end %>

                </div>


                    <%= render partial: "xvaziri", collection: @xvaziris %>

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

_xvaziri.html.erb

<% balance = 0 %>

<tr  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

搜索.js

$(document).on('page:change', function () {
    $("div#sample").hide();

    $("a.toggle-formed").click(function(event) {
        event.preventDefault();
        $("div#sample").fadeToggle();
    });
});

index.js.erb

$(#which_id?).append("<%= j render xvaziri %>");

我将如何链接 id 以便从 xvaziris#index 页面以 js 格式检索所有数据?

我添加了remote: true,响应format.js等

欢迎提出任何建议。

提前谢谢你。

【问题讨论】:

    标签: javascript jquery ruby-on-rails ajax


    【解决方案1】:

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

    index.html.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 %>
    

    【讨论】:

      猜你喜欢
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2017-03-24
      • 2014-04-28
      • 1970-01-01
      • 2013-02-17
      • 1970-01-01
      • 2011-02-01
      相关资源
      最近更新 更多