2014-02-11 34 views
0

我有一個頁面帶有一個表格,該表格根據我的控制器中的變量加載信息。我現在試圖在頁面上實現一個表單。我想讓表單發起表格信息而不是控制器。我必須獲取表單信息並針對數據庫執行一些邏輯來過濾表中的信息。事情是這樣的:基於同一頁上的表單提交的表加載,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> 
+0

你的意思是你想發佈形式,並添加一個新行到表格,根據表格發佈的數據? –

+0

表單被客戶端在瀏覽器中填充,所以你會說話說阿賈克斯做這樣的事情。 PS方式太多的邏輯觀點和一點的CSS會有所幫助。 –

+0

表格是過濾出表格上的結果。我不想編輯實際的信息。只是根據提交內容顯示的內容。因此,如果他們進入美國,我想在美國使用展示廣告代理商。這裏主要的是我想要有國家,城市和州作爲選擇。 – DDDD

回答

0

基於您的評論,你正在尋找一個部分來繪製表格,我們稱之爲:

_draw_resellers.html.erb 

所以,我會做的就是將表單數據用ajax方法發佈到控制器中的一個動作中,該動作將呈現PARTIAL(不是該視圖,因爲它會重新加載您的完整資產庫)。

在你的控制器,你可能會做這樣的事:

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

你可以使用基本的jQuery AJAX函數,該函數。當然,您需要爲表或tbody添加一個id(例如tab_resellers),以便用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,會是這樣,因爲你寫

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

表單將進入或過濾? – DDDD

+0

請參閱編輯以獲得一般圖片 –