我像这样渲染部分:
<% @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>
我不明白的是什么?
答案 0 :(得分:0)
删除:locals
,呈现部分的正确方法是:
render f, :main_page => "sample"
只有在您使用locals:
的备用(旧)版本时才需要传递render
:
# Old way
render partial: f, locals: { main_page: 'sample' }
# Or, identical new way
render f, main_page: 'sample'
但你不能像你想要的那样混合两者;在您的版本中,您创建了一个单一的本地&#34;名为locals
,名称为{main_page: 'sample'}
。
您需要旧的render partial:
方式的唯一时间是您正在呈现一个集合render partial: 'user', collection: @users
,并且还被一个简单的render @users
替换。