加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails使用多个对象呈现部分

发布时间:2020-12-16 21:38:24 所属栏目:百科 来源:网络整理
导读:这段代码工作正常: %= render 'sidebars/pages',:object = @categories = pages,:object = { @myobject = '1',@mmyobject = '2' } % 如果我改为: %= render 'sidebars/pages',:object = { @categories = pages,@myobject = '1',@mmyobject = '2' } % 然后,
这段代码工作正常:
<%= 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也很新,我很感激任何帮助.

干杯!

解决方法

将一个:对象传递给一个Rails局部时,局部变量(不是一个以@开头的实例变量)在partial中定义,该局部变量与partial相同.因此,对于部分sidebars / _pages.html.erb,您的局部变量将被称为页面.

pages局部变量的值是您作为:object选项的值传递的Hash,并且您在“外部”视图中没有的实例变量都可用(例如@categories或@myobject).所以你需要通过页面局部变量访问它们.

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

<%= 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选项,它接受一个Hash,其键成为局部变量.例如:

<%= render 'sidebars/pages',:locals => { :categories => @categories,您可能会遇到以下情况:

<p><%= myobject %></p>
<p><%= mmyobject %></p>

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读