这里有铁杆新手
我的控制器中有2个动作1)索引2)refine_existing。 它们都以相同的格式显示结果。 如何重用index.html.erb文件?
当我尝试以下操作时,它会抱怨refine_existing.erb不存在。
def refine_existing
...
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @results }
end
端
我的索引操作看起来像这样
def index
#some logic to get @results
#set some session variables etc.
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @results }
end
end
我是否必须重构索引视图以包含部分内容
a)制作标题
b)渲染@results
并重用它们?
即使index.html.erb和refine_existing.html.erb看起来完全相同
我在refine_existing操作中有什么方法可以说使用index.erb视图吗?
提前致谢
答案 0 :(得分:3)
按照惯例,如果您没有指定模板名称,Rails会查找与该操作匹配的名称。您可以使用所需的模板名称显式调用render
来覆盖此设置。唯一的缺点是路径是相对于TEMPLATE_ROOT,通常是app/views
:
def refine_existing
...
respond_to do |format|
format.html { render :template => "<table_name>/index.html.erb" }
end
end
将table_name
替换为模型的“tablized”形式。例如。如果你的控制器是PostsController
,那么posts
。因此,您的模板将存在app/views/posts/index.html.erb
- 如果您已根据需要以某种方式调整自定义路径。