我有一个使用Bootstrap选项卡的Rails应用程序。 每个选项卡显示从部分呈现的dataTable。 dataTables正在使用文件中定义的ajax代码: workorders3_datatable.rb和workorders4_datatable.rb。
这是索引代码:
<div class="tab-pane" id="tab2">
<%= render :partial => "workorders/index7", locals: {workorders: @workorders, tab: 2} %>
</div>
<div class="tab-pane" id="tab3">
<%= render :partial => "workorders/index8", locals: {workorders: @workorders, tab: 3} %>
这是我正在努力工作的控制器代码:
def index
@workorders = Workorder.all
@tab = :tab
respond_to do |format|
format.html # index.html.erb
if @tab == 2
format.json { render json: Workorders3Datatable.new(view_context) }
else
format.json { render json: Workorders4Datatable.new(view_context) }
end
end
端
我确定if
声明是错误的。
感谢您的帮助。
UPDATE1
(这很难解释)
但是,我需要json来自tab2的文件Workorders3Datatable
和tab3的Workorders4Datatable
。
那么,如何编写if
stmt来测试tab2与tab3的对比?
UPDATE2
我将视图代码更改为此 - 但是,它仍然会对两个标签视图使用Workorders4Datatable
。
<div class="tab-pane" id="tab2">
<%= render :partial => "workorders/index7", :locals => {:workorders => @workorders, :tab_id => 2} %>
</div>
<div class="tab-pane" id="tab3">
<%= render :partial => "workorders/index8", :locals => {:workorders => @workorders, :tab_id => 3} %>
<div>
控制器:
respond_to do |format|
format.html # index.html.erb
puts "PUTS +++++++++++++ tab_id:" + params[:tab_id].to_s
if params[:tab_id] == 2
format.json { render json: Workorders3Datatable.new(view_context) }
else
format.json { render json: Workorders4Datatable.new(view_context) }
end
end
puts
语句将tab_id显示为nil
控制器没有进入参数
UPDATE3
我正在尝试不同的东西 - 在控制器中有单独的动作
查看代码:
<div class="tab-pane" id="tab2">
<%= render :partial => "workorders/index7", :action => :index2 %>
</div>
<div class="tab-pane" id="tab3">
<%= render :partial => "workorders/index8", :action => :index3 %>
</div>
控制器(我不得不留下索引或不显示)
def index
puts "PUTS +++++++++++ index"
respond_to do |format|
format.html # index.html.erb
format.json { render json: Workorders3Datatable.new(view_context) }
end
end
def index2
puts "PUTS +++++++++++ index2"
respond_to do |format|
format.html # index.html.erb
format.json { render json: Workorders3Datatable.new(view_context) }
end
end
def index3
puts "PUTS +++++++++++ index3"
respond_to do |format|
format.html # index.html.erb
format.json { render json: Workorders4Datatable.new(view_context) }
end
end
最终一直使用index
。
PS - 也尝试了
<%= render :partial => "workorders/index7", :action => "index2" %>
答案 0 :(得分:2)
我不确定我是否理解您要完成的任务,但if
语句可能会失败,因为Workorder.all
永远不会返回nil
。如果数据库中没有任何工作人员,则只返回[]
。你应该做的
if @workorders3.present?
答案 1 :(得分:0)
ActiveRecord查询不能是nil
,但可能是empty?