在 Rails 中使用条件显示视图元素
Posted
技术标签:
【中文标题】在 Rails 中使用条件显示视图元素【英文标题】:Using conditionals to display elements of a view in Rails 【发布时间】:2011-11-28 22:52:51 【问题描述】:我正在使用 Ruby on Rails,我想在视图中显示一个下拉列表,但前提是列表中的项目存在。有什么好方法可以检查模型的至少一个实例是否存在,然后根据此条件在视图中显示?
我正在考虑使用 if 语句,例如:
if firstmodel.secondmodels
。 . html的东西
但我认为空数组不会停止评估为 false。
【问题讨论】:
【参考方案1】:你可以在你的视图中使用这样的东西:
<% if @items.any? %>
<!-- drop down list here -->
<% else %>
<div>No items :-(</div>
<% end %>
一般来说,你应该尽量不考虑逻辑,但我认为在这种简单的情况下,没有多少选择(?)
如果有太多像你的视图那样的if else
,那么......你可以在你的控制器中检查这个并完全渲染另一个视图,比如:
# render no_content.html.erb if there are no items,
# default template file otherwise
render "no_content" unless @items.any?
# or:
render "no_content" if @items.empty?
【讨论】:
【参考方案2】:使用上面的示例,您可以通过执行empty?
来查看数组是否为空。
if firstmodel.secondmodels.empty?
【讨论】:
【参考方案3】:我相信你需要这样的东西:
<% if firstmodel.secondmodels.empty? %>
<p>Stuff</p>
<% else %>
<p>Other Stuff</p>
<% end %>
如果您使用的是 HAML:
- if firstmodel.secondmodels.empty?
%p Stuff
- else %>
%p Other Stuff
【讨论】:
以上是关于在 Rails 中使用条件显示视图元素的主要内容,如果未能解决你的问题,请参考以下文章
Rails html 视图,定位一个元素并使其仅对一个视图不可见。
Ruby/Rails-链接(完整元素)在视图*.erb中显示Edit Destroy Delete记录
如何在 Rails 视图中干燥条件 content_for?