module LayoutHelper
def title(page_title, show_title = true)
content_for(:title) { h(page_title.to_s) }
@show_title = show_title
end
def show_title?
@show_title
end
def stylesheet(*args)
content_for(:head) { stylesheet_link_tag(*args) }
end
def javascript(*args)
content_for(:head) { javascript_include_tag(*args) }
end
end
<!DOCTYPE
html>
<html>
<head>
<title><%= content_for?(:title) ? yield(:title) : "Untitled" %></
title>
<%= stylesheet_link_tag :application
%>
<%= javascript_include_tag :application
%>
<%= csrf_meta_tag
%>
<%= yield(:head)
%>
</
head>
<body>
<div
id="container">
<% if logged_in?
%>
Welcome <%= current_user.username
%>.
<%= link_to "Edit profile", edit_current_user_path %>
or
<%= link_to "Log out", logout_path
%>
<% else
%>
<%= link_to "Sign up", signup_path %>
or
<%= link_to "log in", login_path
%>.
<% end
%>
<% flash.each do |name, msg|
%>
<%= content_tag :div, msg, :id => "flash_#{name}"
%>
<% end
%>
<%= content_tag :h1, yield(:title) if show_title?
%>
<%= yield
%>
</
div>
</
body>
</html>
check this out
On Oct 18, 9:19 am, Matt Martini <[email protected]> wrote:
> I am trying to generate meta tags based on the page. The meta_block call
> in somepage.html.erb sets :meta_block and it is correctly yielded in
> application.html.erb (except that only the last line is output).
>
> But when otherpage.html.erb is rendered, because I don't call meta_block
> there is no meta content output. I thought the "|| meta_block" would
> cause the helper to be called if :meta_block was not set.
>
> How do I get all of the metat tags to be output on the page, and how do
> I get it to happen if there are no per page keywords and description?
>
> Thanks,
>
> Matt
>
> #application_helpers.rb
> def meta_block(description = '', keywords = '')
> tag('meta', :'http-equiv' => 'Content-Type', :content => 'text/html;
> charset=utf-8')
> tag('meta', :'http-equiv' => 'Content-Language', :content => 'en-US,en')
> tag('meta', :name => 'description', :content => SITE[:DESCRIPTION] +
> description)
> tag('meta', :name => 'keywords', :content => SITE[:KEYWORDS] + keywords)
> tag('meta', :name => 'robots', :content => 'all')
> end
>
> #somepage.html.erb
> <% meta_block("My per page description.","keywords, for this, page") %>
> some page's content
> ...
>
> #otherpage.html.erb
> other-page's content
> ...
>
> #application.html.erb
> <!DOCTYPE html>
> <html>
> <head>
> <title>My Application</title>
> <%= yield(:meta_block) || meta_block %>
> <%= stylesheet_link_tag "application" %>
> <%= javascript_include_tag "application" %>
> <%= csrf_meta_tags %>
> </head>
> <body>
> <div id="container">
> <%= yield %>
> </div>
> </body>
> </html>
--
You received this message because you are subscribed to the Google Groups "Ruby
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.