我正在构建一个 Rails 应用程序,其中有一个博物馆页面,该页面的一个功能是显示展品最多的博物馆。问题是,当没有展品添加到数据库时,它会给出未定义的方法“museum_name”。所以我遇到的问题是,我不确定进行检查的最佳方法是什么,以便在展品为零的情况下仍允许我访问该页面?
博物馆 Controller :
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
在 View 中显示:
<%= @top_museum.museum_name %>
最佳答案
最好的方法取决于您想要的方式。我认为您的理想解决方案是检查 if/else
然后相应地显示内容:
<% if @top_museum.present? %>
<%= @top_museum.museum_name %>
<% else %>
<span>Nothing to display</span>
<% end %>
或者使用try
<%= @top_museum.try(:museum_name) %>
或者如果您有 ruby 2.3.0 或更高版本,您可以使用安全导航运算符 <%= @top_museum&.museum_name %>
(Read more)。
关于ruby-on-rails - 修复未定义方法的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57780064/