我正在查询Rails是否记录存在于erb中有很多关系:
<% if @hack.serials %>
最终如果'@hack'中不存在'serial',我想通过jquery将'display:none'添加到div的类中。
这种方式是否有通过erb在rails和jquery之间进行通信的模式?
修改
这里的想法是,如果没有数据,那么我不希望标签及其内容显示出来。在编辑'hack'并重新加载页面之前,div“chart-table”将不会有数据,因此不需要显示。
<div class = "chart-table"
<% if @hack.serials %>
<%= raw 'style="display:block"' %>
<% end %>>
<!-- TABS -->
<div id="tabs">
<ul>
<li><a href="#tabs-1">Chart</a></li>
<li><a href="#tabs-2">Last 5 Table</a></li>
</ul>
<!-- CHART -->
<div id="tabs-1">
<div id="container" style="height: 500px; min-width: 500px"></div>
</div>
<!-- TABLE -->
<div id="tabs-2">
<table class = "table-condensed">
<%= @hack.id %>
<% @hack.serials.each do |s| %>
<tr>
<th>Series Title</th>
<th>Series Name</th>
<th>Series Id</th>
<% s.observations.sort{|a,b| a.id <=> b.id}.last(5).each do |o| %>
<th><%= o.date %></th>
<% end %>
</tr>
<tr>
<td><%= link_to s.title, [@hack, s] %></td>
<td><%= s.series_name %></td>
<td><%= s.id %></td>
<% s.observations.sort{|a,b| a.id <=> b.id}.last(5).each do |o| %>
<% if s.units_short == 'Mil. of $' %>
<td><%= number_to_currency(convertMtoBHack(o.value), :precision => 0) %></td>
<% else %>
<td><%= number_to_currency(o.value, :precision => 0) %></td>
<% end %>
<% end %>
</tr>
<tr>
<td><%= s.frequency_short %></td>
<td><%= s.units_short %></td>
</tr>
<% end %>
</table>
</div>
答案 0 :(得分:2)
我不确定你为什么觉得有必要通过jQuery来做这件事。
为什么不直接写div的style属性?
<div <%= @hack.serials ? 'style="display:none"' : '' %>>
答案 1 :(得分:1)
类似的东西:
<script>
<% unless @hack.serials.map(&:name).include? "My Serial" %>
$('#my_serial_id').css('display', 'none');
<% end %>
</script>
如果您要查找的串口名称为“我的串口”并且找不到,请停止显示相应的div。
Rails代码在服务器端执行,然后呈现给执行javascript的客户端。所以你可以把任何你想要的东西从Rails传递给javascript。
FIY将javascript传递给Rails需要其他技巧和魔术(例如ajax)。
答案 2 :(得分:0)
这个div会在一些ajax类之后显示(在DOM重新加载之前)吗?如果没有,我会质疑你是否应该写它。
我会对Mark Hollands的回答保持警惕,因为尽管它有效,但如果你对该元素进行任何未来的UI更改,它可能会出现问题。如果你需要编写元素,我会坚持使用直接条件并将“静态”代码放入部分:
<% if @hack.serials %>
<div>
<%= render 'something' %>
</div>
<% else %>
<div style='display:none'>
<%= render 'something' %>
</div>
<% end %>
答案 3 :(得分:0)
Rails Hotline的优秀人员帮助我找到答案。
<% if @hack.serials.present? %>
<div class = "chart-table">
<!-- TABS -->
<div id="tabs">
<ul>
<li><a href="#tabs-1">Chart</a></li>
<li><a href="#tabs-2">Last 5 Table</a></li>
</ul>
</div>
</div>
<% end %>
如果&#34;空&#34; @hack.serials返回一个空数组但返回true。使用@hack.serials.present?如果它是一个我正在寻找的行为的空数组,则返回false。