Как передать параметры от контроллера до шаблона?

Кажется, что установка нескольких переменных экземпляра в действии контроллера (метод) вызывает проблемы в шаблоне, только самая первая переменная экземпляра была передана шаблону. Там какой-либо путь состоит в том, чтобы передать несколько переменных шаблону?Спасибо! И почему, в перспективе Ruby, шаблон получает доступ к переменным экземпляра в действии?

6
задан John Topley 22 December 2009 в 09:52
поделиться

2 ответа

Вы также можете изучить параметр: locals для рендеринга. Которая принимает такой хэш, что ключи являются символами, которые сопоставляются с именами локальных переменных в вашем шаблоне, а значения являются значениями, которые нужно установить для этих локальных переменных.

Пример:

render "show", :locals => {:user => User.first, :some_other_variable => "Value"}

и этот шаблон

User ID: <%= user.id %><br>
Some Other Variable: <%=some_other_variable%>

будет производить:

User ID: 1<br>
Some Other Variable: Value

Когда вы повторно используете частичные данные на нескольких контроллерах. Установка локальных переменных с помощью параметра: locals проще и СУХОЕ, чем использование переменных экземпляра.

4
ответ дан 16 December 2019 в 21:41
поделиться

не должно быть проблем с установкой нескольких переменных экземпляров. Например:

class CarsController < ApplicationController
  def show
    @car = Car.find(:first)

    @category = Category.find(:first)
  end
end

позволит вам получить доступ как к @car, так и к @category в машинах/show.html.erb

Причина, по которой это работает, заключается не в рубине, а в какой-то магии, встроенной в рельсы. Рельсы автоматически делают доступными для соответствующего вида любую переменную экземпляра, установленную в действии контроллера.

.
4
ответ дан 16 December 2019 в 21:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: