如何渲染与当前视图不同的目录(在我的例子中是父目录)中的部分内容?
<%=render_partial :sidebar%> #looks in the current dir and works as expected
<%=render_partial "/view/sidebar"%> #doesn't work!谢谢!
发布于 2013-04-20 20:24:10
您必须指定负责正确视图的正确控制器:
TheRightController.render_partial :侧边栏
如果不指定控制器类,除了执行实际内部render_*请求的render_full之外,HTTP只适用于当前操作(控制器)。
因此,答案是:如果您需要共享模板,只需创建特殊的控制器,即名为Shared的控制器,内部没有任何操作方法,只需在适当的视图文件夹中使用许多模板并调用Shared.render_partial即可。
Shared.render_partial的工作方式类似于内部请求。它呈现控制器的操作内容,甚至执行操作的方法。如果只想呈现视图(不执行Shared的操作方法),请使用Shared.render_view。
此外,你可以使用内部请求在共享控制器的方法中准备一些数据。例如,如果您的侧边栏包含@文章,那么让我们将它们加载到共享的侧边栏()方法中。您不需要在显示侧边栏的任何其他控制器中加载@文章!你只需要在那里调用"Shared.render_partial :侧边栏“。这是如何使用Ramaze构建类似小部件的web :-)
发布于 2012-12-07 10:03:41
我在apidock.com中发现了下面的接口,可能对你有用
# Renders a collection of partials located in a view subfolder
# outside of our current controller. In this example we will be
# rendering app/views/shared/_note.r(html|xml) Inside the partial
# each element of @new_notes is available as the local var "note".
render :partial => "shared/note", :collection => @new_notes发布于 2013-10-30 09:27:00
@rebnoob可以使用(没有view目录名,因为Rails在app/view目录上搜索)
<%= render "/sidebar" %>
而不是
<%=render_partial "/view/sidebar"%> #doesn't work!
https://stackoverflow.com/questions/13755719
复制相似问题