13

我还是 ruby​​ 和 rails 的新手,并且正在寻找创建一个变量,以便我可以在视图模板中一遍又一遍地使用它。例如,我现在的代码是

<title>Home Page</title>
<h3>Welcome to my Home Page</h3>

现在我想把这个“主页”作为变量或符号,这样我就可以使用那个变量/符号,而不是一遍又一遍地输入字符串,怎么做?

谢谢

4

3 回答 3

21

当我第一次阅读您的问题时,我以为您是在问这个,但我意识到这是不同的。

Michael Hartl 令人惊叹的Ruby-on-Rails 教程演示了我最喜欢的方法,即创建一个实例变量,该变量完全按照您想要的方式在布局中引用。

rails_root/app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery
  attr_accessor :extra_title
  ...

这使得@extra_title所有控制器都可以访问。现在在一个特定的控制器内:

rails_root/app/controllers/things_controller.rb

class ThingsController < ApplicationController

  def index
    @extra_title = "| Things"
    ...

好的,那这一切是为了什么?哦,对了,我们想在布局中使用它:

rails_root/app/views/layouts/application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>Best. App. Ever. <%= @extra_title %></title>
...

现在你正在使用 Rails。

于 2013-03-02T07:27:39.783 回答
6

您可以使用实例变量prefixed by @,以便可以在整个视图中使用它。

例如:

控制器:

@my_home = "Home Page"

看法:

<title><%= @my_home %></title>
于 2013-03-02T07:33:49.107 回答
1

为此,您可以使用布局或部分布局。这里有一个很好的指南:http: //guides.rubyonrails.org/layouts_and_rendering.html

您可以将该内容放在文件 app/views/layout/application.html.erb 中,它将用作您的默认布局。

您可以做的另一件事是创建一个部分,因此您可以使用该内容创建一个像 /app/views/shared/_header.html.erb 这样的文件,然后您可以通过写入从任何视图呈现它

render partial: '/shared/header.html.erb'
于 2013-03-02T07:15:55.463 回答