传递局部渲染部分

时间:2013-12-14 13:22:11

标签: ruby-on-rails

我像这样渲染部分:

<% @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>

我不明白的是什么?

1 个答案:

答案 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替换。