如何使用一个控制器视图作为Ruby on Rails中另一个控制器的局部视图

时间:2013-04-26 07:16:07

标签: ruby-on-rails model-view-controller view controller

是否可以将一个控制器视图用作另一个控制器视图的局部视图...

在我的场景中,我的控制器有一个动作方法索引和另一个具有动作方法索引的控制器,如下所示。

第一个控制器:

class TemplateItemsController < ApplicationController
def index
@template_items = TemplateItem.order('"TemplateGroup_id"')

respond_to do |format|
  format.html # index.html.erb
  format.json { render json: @template_items }
end
end

在视图中,我们显示模板项目。

我的第二个控制器如下。

class EncounterController <Applicationcontoller
def index
end
end

在视图中我试图访问第二个控制器视图中的第一个控制器视图,如下所示,但是我收到了这个错误:

  

&lt;%= render:partial =&gt; 'template_items / index',:locals =&gt; {:index =&gt; @template_items}%&gt;

  

使用{:locale =&gt; [:en],:formats =&gt; [:html],:handlers =&gt; [:erb,:builder,:coffee]}缺少部分template_items / index。搜索:*“/ home / murali / April22 ROR App / app / views”*“/ var / lib / gems / 1.9.1 / gems / twitter-bootswatch-rails-help-2.3.1 / app / views”< / p>

如何解决此问题?

3 个答案:

答案 0 :(得分:2)

错误明确表示_index中没有app/views/template_items部分。

答案 1 :(得分:1)

创建一个名为template_items/_index.html.erb的文件并在其中写:

<%= render :file => 'template_items/index.html.erb' %>

现在使用:

<%= render :partial => 'template_items/index', :locals => {:index=>@template_items} %>

它应该有用。

答案 2 :(得分:0)

实际上,部分内容保存为_index.html.erb,而在您的views / template_items中,部分内容为index.html.erb,因此它表示部分内容丢失。