проблема при рендеринге шаблона erb [ruby] - PullRequest
0 голосов
/ 25 июля 2011

Я читаю старый учебник о переменных экземпляра.

Однако я не смог вызвать переменную de instance из CONTROLLER в VIEW.

Код:

ПРОСМОТР:

<html>
  <head>
    <title> title </title>
  </head>
  <body>
    <p>            line 1       </p>
    <p> <%=       @text   %>    </p>

  </body>  
</html>

КОНТРОЛЛЕР:

class MoviesController < ApplicationController
  def movies
    @text = "movietitle"
  end
end

Когда я загружаю страницу, на ней отображается только строка 1 абзаца.

Как можноя вызываю переменную экземпляра @TEST?

Ответы [ 2 ]

2 голосов
/ 25 июля 2011

Переменная @test должна содержать "movietitle", и она должна правильно печатать оба абзаца.

Может быть, дополнительное пространство (из-за красивой печати) портит?Попробуйте:

<p>line 1</p>
<p><%=@text%></p>

РЕДАКТИРОВАТЬ:

для того, что вы показали, ваш метод контроллера должен быть назван index не movies

1 голос
/ 26 июля 2011

Хорошо, основываясь на вашем видео, вот ваша проблема.
Вы добавляете новый метод контроллера в фильмы, называемый newaction.В вашем браузере вы идете в / movies, который эффективно вызывает индекс метода контроллера для фильма и отображает index.hmtl.erb для фильмов.Внутри index.html.erb вы пытаетесь получить переменную, которую вы объявили в newaction, это еще одно совершенно другое действие и, конечно, что-либо в newaction недоступно из представления индекса.Самая большая проблема в том, что вы, похоже, думаете, что методы контроллера похожи на функции, которые вызываются из представления, а не на них.

  1. Прочитайте, как работает модель MVC: http://guides.rubyonrails.org/getting_started.html
  2. Вам необходимо создать представление newaction.html.erb в фильмах
  3. Вам необходимо добавить новое действиедействие для вашего файла rout.rb

Прочитайте это: http://guides.rubyonrails.org/routing.html

Код в файле route.rb будет выглядеть следующим образом:


resources :movies do
  get 'newaction'
end

, если вы это сделаетеэто и вы идете в / movies / newaction и внутри newaction.html.erb отображаете заголовок, он будет работать.

...