2013-08-16 41 views
0

我有一個使用Bootstrap選項卡的Rails應用程序。 每個選項卡顯示從部分渲染的dataTable。 dataTables使用文件中定義的ajax代碼: workorders3_datatable.rb和workorders4_datatable.rb。Rails如果在控制器索引中的語句

這是該指數代碼:

<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文件Workorders3DatatableWorkorders4Datatable爲TAB3。

那麼,我該如何編寫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是零 控制器沒有得到PARAM

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" %> 

回答

2

我不知道如果我理解你想什麼來完成,但if聲明可能會失敗,因爲Workorder.all永遠不會返回nil。如果數據庫中沒有任何工作訂單,則它將返回[]。你應該做

if @workorders3.present? 
+0

我不能不同意,+1 :) – apneadiving

+0

感謝您的幫助。 '@ workorders3'或'@ workorders4'將會返回所有的工作訂單。我需要一個if stmt來知道用戶是否單擊了tab2或tab3。我可能甚至不需要'@ workorders3'和'@ workorders4'。 – Reddirt

+0

我改變了我的問題以擺脫'@ workorders3'和'@ workorders4'。 – Reddirt

0

一個ActiveRecord查詢不能nil,但它可能是empty?

相關問題