2016-10-10 60 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