/ / jquery ukryj etykietę i tekst, który wywołał DB - jquery, ruby-on-rails-3

jquery ukryj etykietę i tekst, który wywołany z DB - jquery, ruby-on-rails-3

mam problem z ukryciem etykiety i danych, którepokazane z bazy danych po wybraniu. Ponieważ w mojej tabeli mam dużo kolumn, więc jeśli wywołam je wszystkie, będzie dużo danych zerowych. Aby uniknąć danych zerowych, chcę je ukryć podczas wyświetlania danych.

show.html.erb

<p>
<b>Category:</b>
<%= @combine.master.category if @combine.master %>
</p>

<p id="type">
<b>Type:</b>
<%= @combine.type %>
</p>

<p id="project">
<b>Project name:</b>
<%= @combine.project_name %>
</p>

<p id="unit">
<b>Unit no:</b>
<%= @combine.unit_no %>
</p>

<p id="block">
<b>Block no:</b>
<%= @combine.block_no %>
</p>

<p>
<b>Road name:</b>
<%= @combine.road_name %>
</p>

<p>
<b>Level:</b>
<%= @combine.level %>
</p>

<p>
<b>Facing:</b>
<%= @combine.facing %>
</p>

<p>
<b id="tc">Size:</b>
<%= @combine.size %>
</p>

<p id="value">
<b>Value:</b>
<%= @combine.value %>
</p>

<p id="match">
<b>Match bank:</b>
<%= @combine.match_bank %>
</p>

<p>
<b>Asking:</b>
<%= @combine.asking %>
</p>

JQuery

$(document).ready(function(){
if ($("#combine_category_id").val() == 1){
$("#type").hide();
$("#block").show();
$("#level").show();
$("#tc").text("Size");
$("#value").hide();
$("#project").show();
$("#unit").hide();
$("#match").show();
}
else if ($("#combine_category_id").val() == 3){
$("#type").hide();
$("#block").hide();
$("#road").show();
$("#level").hide();
$("#facing").show();
$("#size").show();
$("#tc").text("Land size");
$("#value").hide();
$("#asking").show();
$("#project").hide();
$("#unit").show();
$("#match").show();
}
else if ($("#combine_category_id").val() == 2){
$("#type").show();
$("#block").show();
$("#road").show();
$("#level").show();
$("#facing").show();
$("#size").show();
$("#tc").text("Size");
$("#value").show();
$("#asking").show();
$("#project").hide();
$("#unit").hide();
$("#match").hide();
}
});

Mam nadzieję, że ktokolwiek pomoże mi rozwiązać ten problem
Wielkie dzięki :)

Odpowiedzi:

1 dla odpowiedzi № 1

Czy naprawdę potrzebujesz do tego javascript?

Co z robieniem czegoś takiego:

<%- unless @combine.type.blank? %>
<p>
<b>Type:</b>
<%= @combine.type %>
</p>
<%- end %>

I tak dalej dla pozostałych pól? Możesz także napisać iterację, aby uniknąć pisania powtarzającego się kodu:

<%- %w(type project unit block road_lavel name facing).each do |col| %>
<%- unless @combine.send(col).blank? %>
<p>
<b><%= col.humanize %>:</b>
<%= @combine.send(col) %>
</p>
<%- end %>
<%- end %>

lub umieść ten kod również w pomocniku