[英]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.