2017-07-05 5 views
0

Ich bin dabei, eine modulare Rails-Vorlage basierend auf der Device-Vorlage zu erstellen. Ich habe die Hauptanwendung Layout:Rails-Render-Ansicht, wenn Datei vorhanden ist

application.html.erb

<!DOCTYPE html> 
<html> 
    <head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
    <title><%= content_for?(:title) ? yield(:title) : "Rails Devise" %></title> 
    <meta name="description" content="<%= content_for?(:description) ? yield(:description) : "Rails Devise" %>"> 
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> 
    <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> 
    <%= csrf_meta_tags %> 
    </head> 
    <body> 
    <header> 
     <%= render 'layouts/navigation' %> 
    </header> 
    <main role="main"> 
     <%= render 'layouts/messages' %> 
     <%= yield %> 
    </main> 
    <footer> 
     <% if File.exist?('layouts/footer') %> 
      <%= render 'layouts/footer' %> 
     <% end %> 
    </footer> 
    </body> 
</html> 

ich eine Fußzeile Vorlage haben, die Ich mag würde schließen, wenn die Datei vorhanden ist (das kann es nicht sein):

_footer.html.erb

<p class="text-muted"> 
    &copy; <%= Time.now.year.to_s %> All rights reserved 
</p> 

File.exist? Rendern der Fußzeile nicht, wenn sie da ist. Wie kann ich die Fußzeile nur hinzufügen, wenn die Vorlagendatei vorhanden ist?

Antwort

0

Verwenden Sie rescue nil am Ende render.

render nil wird nichts zeigen.

<%= render 'layouts/footer' rescue nil %>

Hoffe, es hilft, Prost!

1

Verwenden Sie nicht rescue, dies kann sehr gefährlich sein. Ist besser so

<% if File.exists? Rails.root.join('app/views/layouts/footer.html.erb') %> 
    <%= render 'layouts/footer' %> 
<% end %> 
Verwandte Themen