2016-10-10 61 views
1

我在客戶/ index.json.jbuilder基本index.json.jbuilder文件:Rails的.json.jbuilder刷新

json.array!(@clientsAPI) do |client| 
    json.extract! client, :year, :business_name 
end 

當我在我看來提交表單,該@clientsAPI在更新clients_controller的索引方法。但是,index.json.jbuilder不會更新,並且會保留舊的@clientsAPI值(表單提交之前)。

我怎樣才能得到@clientsAPI在表單刷新後在index.json.jbuilder中更新?

clients_controlled代碼:

def index 
     @clients = Client.all 

     begin 
      @year_filter = params[:c][:year] 
     rescue 
      @year_filter = ["2016"] 
     end 

     @clientsAPI = @clients.where(year:@year_filter) 

     render 'index' 
end 

客戶/ index.html.erb形式發送到上面顯示的指數方法:

<%= form_for :c, url:clients_path, method: :get" do |f| %>  
    <%= f.select :year, options_for_select(@years),{onchange: "this.form.submit();"} %> 
<% end %> 
+0

貴的形式提交(創建/更新等),什麼樣的行動?您可以顯示該操作的控制器代碼,以及相應的create.json.jbuilder/update.json.jbuilder - 我猜測在該操作中沒有設置「@ clientsAPI」變量。 –

+0

我添加了控制器代碼。表單被路由到索引方法的'GET'請求。 Rails中的所有更新都很好,但由於某些原因,index.json.jbuilder中的@clientsAPI在表單提交時並未更新。任何想法在這裏看什麼? jbuilder是否應該更新表單提交? – HoosierCoder

+0

您的表單是否提交json請求或html?它需要用'format:'json''提交,然後你必須確保你在你的控制器中響應json格式:'respond_to do | format | ... etc'。我不確定你的'export_grid_if_requested'塊是幹什麼的,但是如果你到達那裏只會呈現html響應,而不是index.json.jbuilder –

回答

1

這是未經測試,但應該有希望得到你足夠接近..

在你的form_for中,你需要告訴它提交一個json請求。喜歡的東西:

<%= form_for :c, url:clients_path(format: 'json'), method: :get" do |f| %> 

然後在指數法,應對JSON請求:

def index 
    @clients = Client.all 

    begin 
     @year_filter = params[:c][:year] 
    rescue 
     @year_filter = ["2016"] 
    end 

    @clientsAPI = @clients.where(year:@year_filter) 

    respond_to do |format| 
     format.html { 
     render 'index' 
     } 
     format.json { 
     #any logic here specific to a json request. 
     #doing nothing will render index.json.jbuilder by default 
     } 
    end 

+0

所以,這很接近。但它總是呈現json響應。我需要它來呈現JSON和索引。你知道如何渲染兩者嗎? – HoosierCoder

+0

你需要怎樣處理html和json響應?我不認爲Rails真的是設計來從單個請求中呈現多個響應。應該有一種格式或另一種格式來執行你需要的操作 –

+0

我在視圖中有一個角度表,它讀取.json響應並顯示數據。同樣的視圖也顯示在rails中的圖表。所以,我試圖在軌道圖和角度表中顯示更新的信息。 – HoosierCoder