簡體   English   中英

基於同一頁面上的表單提交的表加載,Ruby on Rails 3

[英]Table loading based on form submission on same page, Ruby on Rails 3

我有一個帶有表格的頁面,該表格可根據控制器中的變量加載信息。 我現在正在嘗試在頁面上實現表單。 我希望表單啟動表信息而不是控制器。 我必須采取表單信息,並對數據庫做一些邏輯以過濾表上的信息。 像這樣:

<% @tableResellers = [] %>
<% if @tableResellers << @reseller.company_region.include?(reseller.company_region) %>
<td><% @tableResellers.company_region %></td>

如何將表單信息獲取到同一頁面上的@tableResellers中並立即加載表信息?

我的表格:

<%= form_for(@reseller) do |f| %>
<fieldset>      
    <div class="row">
        <span class="span5 pagination-right">
            Region <span style="color: red">*</span>
            <%= f.select :company_region, options_for_select([ ["North America", "North America"], ...]) %>
        </span>
        <span class="span6"></span>
    </div>
    <div class="row">
        <span class="span5 pagination-right">
            Country <span style="color: red">*</span>
            <%= f.select :company_country, options_for_select([ ['Australia', 'Australia'], ... ]) %>
        </span>
        <span class="span6"></span>
    </div>
    <div class="row">
        <span class="span5 pagination-right">
            State/Province <span style="color: red">*</span>
            <%= f.select :company_state, options_for_select([ ['Alabama', 'Alabama'], ...]) %>
        </span>
        <span class="span6"></span>
    </div>
        <div class="row">
        <span class="span5 pagination-right">
            City <span style="color: red">*</span>
            <%= f.text_field :company_city, placeholder: "City" %>
        </span>
    </div>

</fieldset>
<hr />
<p class="pagination-centered">
    <%= f.submit "Register", class: "btn btn-large btn-primary" %>
</p>
<% end %>

我的桌身:

<tbody>
    <% @resellers.each do |reseller| %>
        <tr>
                <td><%= reseller.contact_name %></td>
                <td><%= link_to reseller.company_name, grandstreamers_reseller_path(reseller) %></td>
                <td><%= reseller.company_region %></td>

                <% if reseller.company_country == "United States" %>
                <td><%= reseller.company_state %></td>
                <% else %>
                <td><%= reseller.company_country %></td>
                <% end %>
                <td><%= reseller.company_city %></td>
                <td><%= reseller.area_served.gsub(/['-]/, '')%></td>                    
                <td><%= reseller.contact_email %></td>
                <td><%= reseller.company_website %></td>
                <td><%= reseller.approved ? "Yes" : "No" %></td>
            <% if @reseller_users_incerts.include?(reseller.id) %>
                <td><%= "Yes" %></td>
            <% else %>
                <td><%= "No" %></td>
            <% end %>
                <td><%= link_to "Edit", edit_grandstreamers_reseller_path(reseller) %>
            </tr>

    <% end %>
</tbody>

根據您的評論,您正在尋找局部繪制表格的方法,我們稱其為:

_draw_resellers.html.erb

因此,我要做的就是使用ajax方法將表單數據發布到將呈現PARTIAL(而不是視圖,因為它將重新加載整個資產庫)的控制器中的操作。

在您的控制器中,您可能會執行以下操作:

def resellers_table
    @resellers=Reseller.where(your_params).all
    render :partial 'draw_resellers'
end

您可以為此使用基本的jquery ajax函數。 當然,您需要向表或表體(例如,tab_resellers)中添加一個id,以便用ajax響應文本替換html。 因此,應該用一個按鈕替換f.submit來調用ajax函數。

在這里檢查方法。 https://api.jquery.com/jQuery.ajax/這很簡單。 基本上,您的按鈕將類似於

<%= link_to_function "Register", "draw_my_table(your_params)" %>

和你的js

function draw_my_table(your_params)  
{ 
    $.ajax({
        type: "GET",
        dataType: "html",
        url: your_url,  //the route to your url with the params (if form is 'get' method)
        beforeSend: function(data)
        {
        },
        success: function(data)
        {
            $('#tab_resellers').html(data);
        }
    });
}

編輯:

您的主要觀點將是這樣的:

控制器:

def filter_resellers #for example
    @resellers=Reseller.all
    @reseller= #not sure what it is, could be plain html form, not rails form
end

和您的視圖filter_resellers.html.erb

<table>
    <tr>
    #headers
    </tr>
    <tdata id='tab_resellers'>
        <%= render :partial => 'draw_resellers' %>
    </tdata>
</table>

<% form_for ....

_draw_resellers.html.erb ,您的部分_draw_resellers.html.erb將是

<% @resellers.each do |reseller| %>
...
<% end %>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM