Обычно, когда мы работаем с действиями show.html.erb
- это представление action
, а не partial
, мы передаем параметры через переменные экземпляра на контроллере, такие как
def show
...
@foo = "bar"
respond_to do |format|
format.html
end
end
Теперь в файле app/views/foos/show.html.erb
у нас есть доступ к @foo
.
При рендеринге партиалов есть несколько способов передачи параметров:
По умолчанию будет отображаться app/views/foos/_foo.html.erb
, поскольку он знает, что @foo
имеет тип Foo
. В нем у вас будет доступ к переменной foo
автоматически.
<%= render @foo %>
Здесь мы отрендерим app/views/foos/_foo_details.html.erb
и передадим объект. Объект принимает имя частичного, поэтому внутри _foo_details.html.erb
у нас будет доступ к переменной с именем foo_details
.
<%= render :partial => "foo_details", :object => @foo %>
Наконец, и, главным образом, в связи с вашим вопросом, мы отрендерим партиал с именем _foo_things.html.erb
и передадим его некоторым местным жителям. В этом случае вы получите локальную переменную с именем title
, с которой вы можете работать.
<%= render :partial => "foo_things", :locals => {:title=> "Test 123"} %>
Надеюсь, это ответит на ваш вопрос.