我似乎无法访问部分中的实例对象.例:
在控制器我有:
ActiveAdmin.register Store do sidebar "Aliases",:only => :edit do @aliases = Alias.where("store_id = ?",params[:id]) render :partial => "store_aliases" end end
然后在_store_aliases.html.erb部分我有:
<% @aliases.each do |alias| %> <li><%= alias.name %></li> <% end %>
这不起作用.唯一有用的东西(由于我在视图中放置逻辑,这是可怕的):
<% @aliases = Alias.where("store_id = ?",params[:id]) %> <% @aliases.each do |alias| %> <li><%= alias.name %></li> <% end %>
解决方法
渲染部分时,您需要主动定义赋予该部分的变量.改变你的路线
render :partial => "store_aliases"
至
render :partial => "store_aliases",:locals => {:aliases => @aliases }
在部分内部,变量可以作为局部变量(不是实例变量!)访问.您需要通过删除@来调整部分内部的逻辑.
<% aliases.each do |alias| %> <li><%= alias.name %></li> <% end %>
有关进一步阅读,请查看API documentation(特别是“3.3.4传递局部变量”部分).