Rails: An elegant way to display a message when there are no elements in database

后端 未结 10 1062
花落未央
花落未央 2020-12-04 09:51

I realized that I\'m writing a lot of code similar to this one:

<% unless @messages.blank? %>
  <% @messages.each do |message|  %>
    <%# cod         


        
10条回答
  •  南方客
    南方客 (楼主)
    2020-12-04 10:26

    If you use the :collection parameter to render e.g. render :partial => 'message', :collection => @messages then the call to render will return nil if the collection is empty. This can then be incorporated into an || expression e.g.

    <%= render(:partial => 'message', :collection => @messages) || 'You have no messages' %>
    

    In case you haven't come across it before, render :collection renders a collection using the same partial for each element, making each element of @messages available through the local variable message as it builds up the complete response. You can also specify a divider to be rendered in between each element using :spacer_template => "message_divider"

提交回复
热议问题