/ / jquery masquer l'étiquette et le texte appelés depuis la base de données - jquery, ruby-on-rails-3

jquery cacher étiquette et texte qui a appelé de DB - jquery, ruby-on-rails-3

j'ai un problème pour masquer les étiquettes et les donnéesaffiché à partir de la base de données après sélection. Parce que dans ma table, j'ai beaucoup de colonne donc si je les appelle tous, ce sera beaucoup de données nulles. Pour éviter les données nulles, je veux les cacher lors de l'affichage des données.

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();
}
});

J'espère que quelqu'un m'aidera à résoudre ce problème
Merci beaucoup :)

Réponses:

1 pour la réponse № 1

Avez-vous vraiment besoin de javascript pour cela?

Qu'en est-il de faire quelque chose comme:

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

Et ainsi de suite pour le reste des champs? Vous pouvez également écrire une itération pour éviter d'écrire du code répétitif:

<%- %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 %>

ou mettez ce code dans une aide aussi