aktualisieren Ich habe eine grundlegende index.json.jbuilder Datei in Kunden/index.json.jbuilder:Rails .json.jbuilder
json.array!(@clientsAPI) do |client|
json.extract! client, :year, :business_name
end
Wenn ich ein Formular in meiner Ansicht vorlegen, wird die @clientsAPI
in die aktualisierte Indexmethode des clients_controllers. Der Index.json.jbuilder wird jedoch nicht aktualisiert und behält die alten Werte @clientsAPI
(vor dem Senden des Formulars) bei.
Wie kann ich @clientsAPI
bekommen, um in index.json.jbuilder bei der Formularaktualisierung aktualisiert zu werden?
clients_controlled Code:
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
Kunden/index.html.erb den Index Verfahren geroutet Form oben gezeigt:
<%= form_for :c, url:clients_path, method: :get" do |f| %>
<%= f.select :year, options_for_select(@years),{onchange: "this.form.submit();"} %>
<% end %>
Welche Maßnahmen Formular einreichen (erstellen/aktualisieren usw.)? Können Sie den Controller-Code für diese Aktion und den entsprechenden create.json.jbuilder/update.json.jbuilder anzeigen? Ich vermute, dass in dieser Aktion keine '@ clientsAPI'-Variable gesetzt ist. –
Ich habe den Controller-Code hinzugefügt. Das Formular wird weitergeleitet, um eine "GET" -Anforderung an die Indexmethode zu senden. Alles innerhalb von Rails wird problemlos aktualisiert, aber aus irgendeinem Grund wird die @ clientsAPI in index.json.jbuilder nicht aktualisiert, wenn das Formular übermittelt wird. Irgendwelche Ideen, was hier zu sehen ist? Soll der Jbuilder bei der Formularübergabe aktualisiert werden? – HoosierCoder
Ist Ihr Formular eine JSON-Anfrage oder HTML? Es muss mit 'format: 'json'' gesendet werden und dann musst du sicherstellen, dass du auf das json Format in deinem Controller reagierst:' respond_to do | format | ... usw. Ich bin nicht sicher, was Ihr 'export_grid_if_requested' Block tut, aber wenn Sie dorthin gelangen, wird nur die HTML-Antwort rendern und nicht die index.json.jbuilder –