【问题标题】:How to create and use variable in VIews Template in Rails ?如何在 Rails 的视图模板中创建和使用变量?
【发布时间】:2013-03-02 15:33:49
【问题描述】:

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

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

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

谢谢

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

当我第一次看到你的问题时,我以为你在问this,但我意识到这是不同的。

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

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。

【讨论】:

    【解决方案2】:

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

    例如:

    控制器:

    @my_home = "Home Page"
    

    查看:

    <title><%= @my_home %></title>
    

    【讨论】:

    • 奥斯汀解决方案的优势是什么?您应该添加 my_home 必须在控件的操作中。
    【解决方案3】:

    为此,您可以使用布局或部分布局。这里有一个很好的指南: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'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 2023-01-24
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2018-01-14
      • 1970-01-01
      相关资源
      最近更新 更多