繁体   English   中英

通过局部渲染

[英]Pass locals for render partial

我这样渲染局部:

<% @assets_new.each do |f| %>

  <li class='asset_item'><%= render f ,:locals => { :main_page => "sample" } %> </li>

<% end %>

然后,我有_asset.html.erb,例如:

<%= main_page %>

在我尝试读取main_page当地人的地方,但是它不起作用,它抛出错误:

    undefined local variable or method `main_page' for #
    <#<Class:0x007fe865cc2018>:0x007fe8625cdb98>

我不明白什么?

删除:locals ,呈现局部的正确方法是:

render f, :main_page => "sample"

仅在使用render的替代(旧)版本时才需要传递locals:

# Old way
render partial: f, locals: { main_page: 'sample' }

# Or, identical new way
render f, main_page: 'sample'

但是,您不能像尝试那样将两者混为一谈。 在您的版本中,您已经创建了一个名为locals “ local”,其值为{main_page: 'sample'}

唯一需要旧的render partial:方法是在渲染集合时, render partial: 'user', collection: @users ,并且也已替换为简单的render @users

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM