Как передать параметры из контроллера в шаблон? - PullRequest
6 голосов
/ 22 декабря 2009

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

Ответы [ 2 ]

4 голосов
/ 22 декабря 2009

Возможно, вы захотите взглянуть на опцию: 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 голосов
/ 22 декабря 2009

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...