我正在构建一个rails应用程序,其中我有一个博物馆页面,其中有一个功能,它显示了最多的展品博物馆。问题是,当没有展品添加到数据库中时,它会给出一个未定义的方法‘method _name’。所以我的问题是,我不确定什么是最好的方法来进行检查,如果没有展品,仍然允许我访问页面?
博物馆管理员:
def index
@museums = Museum.all
most_exhibits = Exhibit.most_exhibits
most_exhibits.each do |museum|
@top_museum = MuseumsHelper.get_museum_name(museum.museum_id)[0]
end正在使用的帮助器类方法:
def self.get_museum_name(museum_id)
Museum.where(id: museum_id)
end在视图中显示:
<%= @top_museum.museum_name %>发布于 2019-09-04 09:45:40
做这件事的最佳方式取决于你想要它是什么样子。我认为理想的解决方案是检查if/else,然后相应地显示内容:
<% if @top_museum.present? %>
<%= @top_museum.museum_name %>
<% else %>
<span>Nothing to display</span>
<% end %>或者使用try <%= @top_museum.try(:museum_name) %>,或者如果你有Ruby2.3.0或更新版本,你可以使用安全导航操作符<%= @top_museum&.museum_name %> (Read more)。
发布于 2019-09-04 10:11:00
您可以在helper中使用try,这样它就会尝试查询,如果失败,则返回nil
def self.get_museum_name(museum_id)
Museum.try(where(id: museum_id))
endhttps://stackoverflow.com/questions/57780064
复制相似问题