13

私はまだルビーとレールに不慣れで、ビューテンプレートで何度も使用できるように変数を作成しようとしています。たとえば、現在の私のコードは

<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 に答える