gpt4 book ai didi

ruby-on-rails - Rails 使用多个对象渲染部分

转载 作者:行者123 更新时间:2023-12-03 16:18:05 25 4
gpt4 key购买 nike

这段代码工作正常:

<%= render 'sidebars/pages', :object => @categories = pages , :object => { @myobject => '1', @mmyobject => '2' } %>

如果我改成这样:
<%= render 'sidebars/pages', :object => { @categories => pages, @myobject => '1', @mmyobject => '2' } %>

然后,当它尝试迭代@categories 时,我收到来自部分的错误:
undefined method `each' for nil:NilClass

我对 ruby​​ 和 rails 也很陌生,我感谢任何帮助。

干杯!

最佳答案

当您通过 :object对于 Rails 部分,局部变量(不是实例变量,以 @ 开头)在与部分同名的部分中定义。所以对于偏sidebars/_pages.html.erb ,您的局部变量将被称为 pages .
pages的值局部变量是您作为 :object 的值传递的哈希值选项,并且您在“外部” View 中拥有的任何实例变量都将不可用(例如 @categories@myobject )。因此,您需要通过 pages 访问这些文件。局部变量。

你可能正在寻找这样的东西:

<%= render 'sidebars/pages', :object => { :categories => @categories, :myobject => '1', :mmyobject => '2' } %>

而在 sidebars/_pages.html.erb ,你可能有这样的事情:
<p><%= pages[:myobject] %></p>

<ul>
<% pages[:categories].each do |category| %>
<li><%= category %></li>
<% end %>
</ul>

请参阅 Rails 布局和渲染指南 Partials section更多细节。

更新:

更好的解决方案是使用 :locals选项,它接受一个哈希,其键成为局部变量的局部变量。例如:
<%= render 'sidebars/pages', :locals => { :categories => @categories, :myobject => '1', :mmyobject => '2' } %>

而在 sidebars/_pages.html.erb ,你可能有这样的事情:
<p><%= myobject %></p>
<p><%= mmyobject %></p>

<ul>
<% categories.each do |category| %>
<li><%= category %></li>
<% end %>
</ul>

关于ruby-on-rails - Rails 使用多个对象渲染部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15725853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com