0

我有一个Home带有 2 个引导选项卡的页面。我在使用第二个选项卡时遇到问题。我正在尝试呈现工单列表。对于该列表,我使用的是 dataTables 和 ajax。

我的问题是 workorders/index7.html.erb 作为独立页面可以正常工作。但是,我想在主页的引导选项卡中使用它。

对于我所有的其他 Bootstrap 选项卡列表,我使用的是同一控制器中的部分。但是,在这种情况下,我需要使用来自Workorder控制器而不是Home控制器的视图。

这是我在Home视图中尝试的代码:

<div class="tab-pane" id="tab2">
  <%= render "workorders/index7" %>
</div>

该代码给了我:

Missing partial workorders/index7

为什么?如果我将文件名更改为 _index7.html.erb 代码将不会执行以获取 json。

但是,因为它是部分的,从 开始_,与 Workorder 控制器代码的连接index7不起作用。我也在_index7Workorder 控制器中尝试过。

Workorder控制器有这个代码:

 def index7
   @workorders = Workorder.all

 respond_to do |format|
   format.html # index.html.erb
   format.json { render json: Workorders3Datatable.new(view_context) }
 end
end

该代码使用一个名为workorders3_datatable.rb通过 ajax 获取数据并将其格式化为 dataTables 的文件。

问题:

1)我必须在Home标签中使用部分吗?或者有没有办法在选项卡中呈现一个名为 workorders/index7.html.erb 的文件?

2) 为什么 index7.html.erb 使用 index7 的控制器代码,而部分 _index7.html.erb 在控制器中调用 _index7 时不会使用代码?

3)我读到这个“渲染只会渲染视图,它不会运行与之关联的动作。” - 真的吗?

感谢您的帮助 - 我知道这很令人困惑。

红土

更新 1

该视图作为 workorders/index7 运行良好 - 但是,如果我将其更改为部分并将其放入 tab = workorders/_index7 - index7 的控制器代码似乎没有执行。

4

2 回答 2

0

1)我必须在主页选项卡中使用部分吗?或者有没有办法在选项卡中查看一个名为 workorders/index7.html 的文件?

如果你想遵循这种方法。从 Home 控制器传递集合 ( @workorders = Workorder.all)

然后在主页视图中将其传递给workorders/index7本地人

<div class="tab-pane" id="tab2">
  <%= render "workorders/index7" locals: {workorders: @workorders} %>
</div>

这将使它可以workorders/index7记住将变量更改为局部变量workorders

于 2013-06-28T16:46:40.530 回答
0

您需要:partial在主页的视图中包含:

<%= render :partial => "workorders/index7" %>

app/views/workorders文件夹将需要一个名为_index7.html.erb. 要从当前设置中完成此操作,您可以将 的内容移动index7.html.erb到此部分中,然后使用:

<%= render :partial => "index7" %> 

在原文中index7.html.erb。这样,您可以将其呈现为整个页面,并在您的主页中作为部分呈现。

于 2013-06-28T19:56:42.530 回答