【问题标题】:Render partial in layout file with data使用数据在布局文件中渲染部分
【发布时间】:2011-04-01 21:30:51
【问题描述】:

我网站的导航显然存储在应用程序布局文件中。该导航的一部分是由数据库驱动的。如何在布局中渲染部分并传入对象集合以进行渲染?

编辑: 我认为我的问题更多地围绕如何将数据获取到部分,是从应用程序控制器完成还是我必须在每个控制器的每个操作中添加数据?

【问题讨论】:

    标签: ruby-on-rails-3 layout renderpartial


    【解决方案1】:

    如果您只想传递一个对象,那么您可以在render 上使用object 键。传递的对象将作为与局部变量同名的局部变量进行访问。所以如果部分被称为navigation,则局部变量将为navigation。

    <%= render :partial => 'foo/navigation', :object => @my_collection
    

    在局部:

    <% for obj in navigation %>
      ...
    <% end %>
    

    如果您希望传递多个对象,则可以使用locals 键。然后,布局中局部变量的名称就是传递的哈希的键。

    <%= render :partial => 'foo/navigation', :locals => { :foo => 'Hello', :bar => 'World' }
    

    在局部:

    <%= foo %>
    <%= bar %>
    

    【讨论】:

    • 所以在您的第一个示例中,foo 将是获取数据@my_collection 的操作的名称?
    • 在第一个示例中,foo 是部分视图所在的子目录。
    • 好吧,我想我的问题真的是我如何将数据放入部分,我可以从应用程序控制器中做到这一点吗?
    • 在你的控制器或application_controller中定义@my_collection。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2011-04-17
    • 2012-05-12
    • 2013-10-11
    相关资源
    最近更新 更多