我有一个带有2个Bootstap标签的Home
页面。我遇到了第二个标签的问题。我正在尝试渲染工作人员列表。对于该列表,我正在使用dataTables和ajax。
我的问题是workorders / index7.html.erb可以作为独立页面正常工作。但是,我想在主页上的Bootstrap选项卡中使用它。
对于我所有其他的Bootstrap选项卡列表,我在同一个控制器中使用了部分内容。但是,在这种情况下,我需要使用Workorder
控制器中的视图而不是Home
控制器。
这是我在Home
视图中尝试的代码:
<div class="tab-pane" id="tab2">
<%= render "workorders/index7" %>
</div>
那段代码给了我:
Missing partial workorders/index7
为什么?如果我将文件名更改为_index7.html.erb,则不会执行代码来获取json。
但是,因为它是部分的,从_
开始,与index7
的Workorder控制器代码的连接不起作用。我还在Workorder控制器中尝试了_index7
。
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,那么部分_index7.html.erb将不会使用代码?
3)我读到这个“渲染将只渲染视图,它不会运行与之关联的动作。” - 是真的吗?
感谢您的帮助 - 我知道这很令人困惑。
Reddirt
更新1
视图作为工作程序/ index7运行良好 - 但是,如果我将其更改为部分并将其放在tab = workorders / _index7中 - 则index7的控制器代码似乎不会执行。
答案 0 :(得分: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
。
答案 1 :(得分:0)
您需要在主页的视图中加入:partial
:
<%= render :partial => "workorders/index7" %>
app/views/workorders
文件夹需要一个名为_index7.html.erb
的文件。要从当前设置中完成此操作,您可以将index7.html.erb
的内容移动到此部分中,然后使用:
<%= render :partial => "index7" %>
原始index7.html.erb
中的。这样,您可以将其作为整个页面呈现在您的主页中作为部分内容。