2016-08-10 1 views
0

Я пытаюсь отобразить частичный вид в представлении. У меня есть следующий код на мой взгляд, который призывает Haml документа, оказываемые:Доступ к данным контроллера для передачи локальных переменных для рендеринга частичного haml в представлении

= render :partial => 'data_popups/events' 

Однако мне нужно пройти локальные переменные так «не определено локальная переменная» решена. Контроллер, который содержит все данные, находится в dataPopupsController # events ... есть ли в любом случае доступ к данным, чтобы я мог передавать локальные переменные в частичное? Любая помощь приветствуется. Cheers ~

ответ

2

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

# app/controllers/pages_controller.rb 
class PagesController < ApplicationController 
    def home 
    @data = Model.get_data 
    end 
end 

Затем, на ваш взгляд, передать эту @data в ваш парциальное используя locals вариант в render метод:

# app/views/pages/home.html.erb 
<%= render :partial => 'data_popups/events', :locals => { :data => @data } %> 
+0

Отлично, так как я могу сделать данные доступными в моем внешнем виде через контроллер? –

+0

Я расширил свой ответ, чтобы показать доступность данных через контроллер. – rmhunter

+0

, так что если у меня есть следующие частичные: events/show/_sidebar.html.haml ... мне нужно будет включить этот код в event_controller? В настоящее время я запрашиваю и получаю доступ к переменным в data_popups_controller. –

0

Не видя код контроллера, вот простой пример того, что вы могли бы сделать:

class UsersController < ApplicationController 
    def index 
    @data = User.get_data 
    end 
end 

# views/users/index.html.erb 

<%= @data.some_method %> 
<%= render 'data_popups/events', :locals => { :data => @data } %> 

# views/data_popups/_events.html.erb 

<%= data.some_other_method %> 

Обратите внимание, что Wh ru вы передаете @data в качестве локального для 'data_popups/events', теперь вы ссылаетесь на локальную переменную как data.

Смежные вопросы