Rails 4.2.0 :当集合为空时显示消息
Rails 4.2.0 : Display message when collection is empty
我在我的index.html.erb中尝试过这个,但它不起作用。
<%= render(@xvaziris) || 'No records' %>
索引.html.erb
<div class="row">
<div class="col-md-10 col-md-offset-1">
<div class="table-responsive myTable">
<table id = "kola" class="table listing text-center">
<thead>
<tr class="tr-head">
<td>Date</td>
<td>Description</td>
<td>Amount</td>
<td>Discount</td>
<td>Paid</td>
<td>Balance</td>
</tr>
</thead>
<a href="#" class="toggle-formed" style="float: right;" ><strong>Search</strong></a>
<div id="sample">
<%= form_tag xvaziris_path, remote: true, method: :get, class: "form-group", role: "search" do %>
<p>
<center><%= text_field_tag :search, params[:search], placeholder: "Search for.....", autofocus: true, class: "form-control-search" %>
<%= submit_tag "Search", name: nil, class: "btn btn-md btn-primary" %></center>
</p>
<% end %><br>
</div>
<tbody>
<%= render(@xvaziris) || 'No records' %>
</tbody>
</table>
</div>
</div>
</div>
索引.js.erb
<% @balance = 0 %>
$('#kola tbody').empty();
<% @xvaziris.each do |xvaziri| %>
$('#kola tbody').append("<%= j render xvaziri %>");
<% end %>
我是否需要将其包装在index.js.erb中的某个地方才能运行。
欢迎任何建议。
提前谢谢你。
我想你可能想要这样的东西:
<% if @xvaziris.empty? %>
<em>No records</em>
<% else %>
<%= render(@xvaziris) %>
<% end %>
或者另一种更短但可读性较差的方式:
<%= @xvaziris.present? ? render(@xvaziris) : "No Records" %>
我个人更喜欢第一种解决方案
所以你在问为什么你的解决方案不起作用。这是因为render
返回一个字符串。(在您的情况下是空的)
||
运算符就像一个简短的 if/else:假设您有一个值为 nil,那么您执行以下操作:
value = nil
value || 1 # => will return 1
现在 if/else 方式:
value = nil
result = if value
value
else
1
end
result # => will return 1
现在在您的案例中:
value = render(...) # => "" (empty string)
value || "something else" # => "" (empty string)
这是因为空字符串不返回 false
要检查值是真还是假,您可以使用双重协商(!!
运算符),这只是将对象转换为布尔值的一种方式。
empty_string = ""
!!empty_string # => true
!!nil # => false
在我以以下方式使用 if else 条件更改 index.js.erb 后,我让它工作了。
索引.js.erb
<% @balance = 0 %>
$('#kola tbody').empty();
<% if @xvaziris.empty? %>
$('#kola tr').remove();
$('#kola tbody').append("No Results Found For Your Search...");
$("#kola tbody").css({"background-color": "white", "font-size": "100%", "font-weight": "900"});
<% else %>
<% @xvaziris.each do |xvaziri| %>
$('#kola tbody').append("<%= j render xvaziri %>");
<% end %>
<% end %>
相关文章:
- 如果下载不成功,如何显示消息
- 如何在 jquery 中的速率按钮下方显示消息状态
- 删除所有可拖动元素后如何显示消息
- php表单验证n在表单上显示消息3秒钟并淡出
- 单击“点赞”按钮时显示消息
- javascript初学者-无法在屏幕上显示消息框
- 在表单提交后显示消息的方法
- 遍历列表,并在jQuery为空时显示消息
- 在jquery幻灯片登录表单上显示消息
- 如果文本筛选器在ng重复中未返回结果,则显示消息
- 以javascript显示消息框
- 在angular 1中,我如何检测angular是否受支持,并在屏幕上显示消息's不受支持
- 浏览器全屏显示,按键时不显示消息
- 选取随机数组元素,将其移除,并在没有更多可用元素时显示消息
- 仅当浏览器不是Google Chrome时显示消息
- 如果所有李都被隐藏,则显示消息
- 在提交表单和显示消息之前,如何检查表单输入是否全是数字
- 如果使用 JavaScript 登录失败,如何在登录页面中显示消息
- j查询验证未显示消息
- 为什么不显示消息