Ruby on rails 如何在使用布局和部分时动态显示自定义标题
我有一个布局和部分工作良好。问题是不同的型号都有相同的名称。如果我可以为每个模型自定义标题,那就太好了 这是我的布局:Ruby on rails 如何在使用布局和部分时动态显示自定义标题,ruby-on-rails,Ruby On Rails,我有一个布局和部分工作良好。问题是不同的型号都有相同的名称。如果我可以为每个模型自定义标题,那就太好了 这是我的布局: 这是我的控制器,我试着根据它工作: class ViewerController
这是我的控制器,我试着根据它工作:
class ViewerController
我尝试将布局更改为,但没有成功。我还尝试根据其他帖子将控制器更改为helpers.content_(标题)“查看器”和elpers.content_(标题)| |“查看器”,但都失败了
如果这种方法不起作用,那么我愿意接受另一种方法。您的布局应该是
yield:title
,而不是content\u for:title
。通过这种方式,对于控制器,您可以按照已经正确执行的操作,即将布局的内容设置为其各自的标题
使用
yield:title
时,除了由其他控制器/视图/模型处理之外,您实际上在做与渲染
相同的事情。在application\u helper.rb中添加以下代码:
def full_title(page_title = '')
base_title = "Ruby on Rails Tutorial Sample App"
if page_title.empty?
base_title
else
page_title + " | " + base_title
end
在application.html.erb文件中添加以下代码:
<title><%= full_title(@title) %></title>
但是,使用实例变量来显示标题不是一个好主意。我想出来了。以下是我的布局:
<!DOCTYPE HTML>
<html>
<head>
<title><%= yield :title %></title>
</head>
<body>
<%= render 'header' %>
<%= render "sidebar" %>
<%= render "content" %>
<%= render template: "layouts/footer" %>
</body>
以下是我的视图(index.html.erb):
我不知道erb会执行,即使它没有被调用在任何地方显示。我哪儿也没有。我可以把HTML放在那里,没有人会看到它。但是ruby代码将执行。这不起作用,因为没有单独的页面,只有布局。我尝试在控制器中提供(:title,“Home”),但它不起作用。提供(:title,“Home”)在控制器中不起作用,它仅用于查看。如果要从控制器设置标题,必须使用实例变量OK,那么如何使实例变量仅显示标题?yield:没有实例变量,标题不起作用。和provide(:title,“Home”)在控制器中不起作用。我发现,如果index.html.erb中有一行代码为“”的话,它就起作用了。我不知道html.erb文件会执行,即使它没有显示在布局中。这个设计干净吗?除非有人指出更好的方法,否则我会将其作为解决方案发布。可能是
<title><%= full_title(@title) %></title>
@title = "Home"
<!DOCTYPE HTML>
<html>
<head>
<title><%= yield :title %></title>
</head>
<body>
<%= render 'header' %>
<%= render "sidebar" %>
<%= render "content" %>
<%= render template: "layouts/footer" %>
</body>
<% provide(:title, "Viewer") %>