Кажется, что установка нескольких переменных экземпляра в действии контроллера (метод) вызывает проблемы в шаблоне, только самая первая переменная экземпляра была передана шаблону. Там какой-либо путь состоит в том, чтобы передать несколько переменных шаблону?Спасибо! И почему, в перспективе Ruby, шаблон получает доступ к переменным экземпляра в действии?
Вы также можете изучить параметр: 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 проще и СУХОЕ, чем использование переменных экземпляра.
не должно быть проблем с установкой нескольких переменных экземпляров. Например:
class CarsController < ApplicationController
def show
@car = Car.find(:first)
@category = Category.find(:first)
end
end
позволит вам получить доступ как к @car, так и к @category в машинах/show.html.erb
Причина, по которой это работает, заключается не в рубине, а в какой-то магии, встроенной в рельсы. Рельсы автоматически делают доступными для соответствующего вида любую переменную экземпляра, установленную в действии контроллера.
.