如何在Rails中的VIews模板中创建和使用变量?

iCy*_*org 10 ruby ruby-on-rails

我仍然是ruby和rails的新手,并且正在寻找创建变量,因此我可以在视图模板中反复使用它.例如,我现在的代码是

<title>Home Page</title>
<h3>Welcome to my Home Page</h3>
Run Code Online (Sandbox Code Playgroud)

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

谢谢

Aus*_*ins 17

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

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

RAILS_ROOT /应用/控制器/ application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery
  attr_accessor :extra_title
  ...
Run Code Online (Sandbox Code Playgroud)

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

RAILS_ROOT /应用/控制器/ things_controller.rb

class ThingsController < ApplicationController

  def index
    @extra_title = "| Things"
    ...
Run Code Online (Sandbox Code Playgroud)

好的,那又是什么呢?哦,对了,我们想在布局中使用它:

RAILS_ROOT /应用/视图/布局/ application.html.erb

<!DOCTYPE html>
<html>
<head>
  <title>Best. App. Ever. <%= @extra_title %></title>
...
Run Code Online (Sandbox Code Playgroud)

而现在你正在驾驶Rails.


My *_*God 5

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

例如:

控制器:

@my_home = "Home Page"
Run Code Online (Sandbox Code Playgroud)

视图:

<title><%= @my_home %></title>
Run Code Online (Sandbox Code Playgroud)