2017-02-14 45 views
0

比較當前行與Ruby的前一行ActiverRecord結果我需要做出與OPTGROUP一個選項列表,從這樣的查詢結果:on Rails的

<select> 
    <optgroup label="here one of the results of query"> 
    <option>rest of results</option> 
    </optgroup> 
</select> 

我需要的是這樣的(或更好)。例如在PHP中:

<?php 
    $sql= "query here"; 
    $result=$connection->createCommand($sql)->queryAll(); //to execute the query and save in the variable result 


    for ($i=1; $i <count($result) ; $i++) 
    { 
    $a = $i-1 
    if ($result[$a]["optiongroup"] == $result[$i]["optiongroup"]) 
    { 
     // agree to the optiongroup with an option 
    } 
    else 
    { 
     // close the optiongroup and starts a new option group 
    } 
    } 
?> 

我有這樣的:

控制器:

@componentes = Tipo.find_by_sql("SELECT t1.tip_titulo as pieza, t2.tip_id, t2.tip_titulo FROM `tipos` t1 
    LEFT JOIN tipos t2 ON (t1.tip_id = t2.tip_id_padre) 
    WHERE t1.tip_id_padre IN (38)") 

在查詢結果顯示是這樣的:

pieza   tip_id tip_titulo 
Fuente de poder 41  Ventilador 
Fuente de poder 42  Conector de alimentacion 
Memoria Ram  43  Placa 
Memoria Ram  44  Reloj 

所以選擇必須出現在這樣:

<select> 
    <optgroup label="Fuente de poder"> 
    <option value="41">Ventilador</option> 
    <option value="42">Conector de alimentacion</option> 
    </optgroup> 
    <optgroup label="Memoria RAM"> 
    <option value="43">Placa</option> 
    <option value="44">Reloj</option> 
    </optgroup> 
</select> 

如何用Rails 5.0.1解決這個問題? 問候。

回答

0

在常規的Rails應用程序,你應該定義一個視圖模板(應該有html.erb結局控制器的名稱,例如products.html.erb)

然後你將products.html定義。 erb:

<select> 
<optgroup label="here one of the results of query"> 
<% @components.each do |component| %> 
     <option value='<%= component.tip_id %>'> <%= component.tip_titulo %></option> 
<%end%> 
</select> 

因此,您將看到在控制器中定義的@componenets在模板視圖中可自動訪問。

見的Rails的文檔選擇http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/select

+0

嗨,THX的答案,但我需要顯示的選項組及其選項選擇當我完成像PHP代碼的比較表明,像在HTML –

+0

我編輯我的回答給你一個線索最後一個例子在如何做到這一點,你應該沒有問題的應用條件(我看你有你的PHP代碼中的一些條件),並相應地渲染。希望這可以幫助。正如你所看到的,你基本上在Ruby中嵌入了Ruby代碼,就像你在php中做的那樣。 –

+0

我發佈了我的視圖和optgroup的問題,看看 –

0

我正是@Joel_Blum,請看:

<select class="form-control" name="tip_id_componente[]" id="tip_id_componente" multiple="multiple" size="8" style="color: black; width: 400px; "> 
    <% @componentes.each do |c| %> 
                    <option id="<%= c.tip_id %>" value="<%= c.tip_id %>"><%= c.tip_titulo %> (<%= c.pieza %>)</option> 
                   <% end %> 
</select> 

,但如果我同意這樣的OPTGROUP似乎沒有OPTGROUP,:

<select class="form-control" name="tip_id_componente[]" id="tip_id_componente" multiple="multiple" size="8" style="color: black; width: 400px; "> 

<% @componentes.each do |c| %> 
<optgroup label="<%=c.pieza%>">                 
<option id="<%= c.tip_id %>" value="<%= c.tip_id %>"><%= c.tip_titulo %> (<%= c.pieza %>)</option> 
</optgroup> 
<% end %> 

然後顯示這樣的html代碼:

<select> 
<optgroup label="Fuente de poder"> 
<option value="41">Ventilador</option> 
</optgroup> 
<optgroup label="Fuente de poder"> 
<option value="42">COnector de alimentacion</option> 
</optgroup> 
<optgroup label="Memoria ram"> 
<option value="43">placa</option> 
</optgroup> 
<optgroup label="Memoria ram"> 
<option value="44">reloj</option> 
</optgroup>