【问题标题】:How to use one controller view as a partial view for another controller in Ruby on Rails如何在 Ruby on Rails 中使用一个控制器视图作为另一个控制器的局部视图
【发布时间】:2013-04-20 07:01:44
【问题描述】:

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

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

第一个控制器:

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

在视图中,我尝试访问第二个控制器视图中的第一个控制器视图,如下所示,但出现此错误:

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

还有:

缺少 {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]} 的部分 template_items/index。在以下位置搜索:*“/home/murali/April22 ROR App/app/views”*“/var/lib/gems/1.9.1/gems/twitter-bootswatch-rails-helpers-2.3.1/app/views”

我该如何解决这个问题?

【问题讨论】:

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


    【解决方案1】:

    错误清楚地表明您在app/views/template_items 中没有_index partial。

    【讨论】:

    • 我的问题是如何将一个控制器视图用作另一个控制器视图的局部视图..
    • 在文件夹中创建部分文件,试一试就会得到结果。
    【解决方案2】:

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

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

    现在使用:

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

    它应该可以工作。

    【讨论】:

    • 和上面提到的一样的错误,我看到了你建议的帖子,但对我没有帮助
    • 缺少部分 /template_items/index 与 {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}。在以下位置搜索:*“/home/murali/April22 ROR App/app/views”*“/var/lib/gems/1.9.1/gems/twitter-bootswatch-rails-helpers-2.3.1/app/views”
    【解决方案3】:

    其实partials保存为_index.html.erb,而在你的views/template_items中是index.html.erb,所以说partials丢失了。

    【讨论】:

      猜你喜欢
      • 2012-01-09
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      相关资源
      最近更新 更多