访问控制器数据以传递局部变量以在视图中呈现 haml 部分

Accessing controller data in order to pass local variables for rendering a haml partial in a view

我正在尝试在视图中渲染部分内容。在我看来,我有以下代码调用正在呈现的 haml 文档:

= render :partial => 'data_popups/events'

不过我需要传递局部变量所以'undefined local variable'就解决了。包含所有数据的控制器位于 dataPopupsController#events 下......无论如何都可以访问数据以便我可以将局部变量传递给局部变量吗?欢迎任何帮助。干杯~

只要数据在您的外部视图中可用,您就可以使用 locals 选项将其传递给局部视图。例如,如果这是在您的主页上,您可以像这样将数据传递给控制器​​...

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

然后,在您看来,使用 render 方法的 locals 选项将 @data 传递到您的部分:

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

在看不到您的控制器代码的情况下,这里是您可以执行的操作的基本示例:

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 %>

请注意,当您将 @data 作为局部变量传递给 'data_popups/events' 时,您现在将局部变量引用为 data