Ich habe Probleme mit einem ziemlich einfachen Fluss in Rails. Ich möchte, dass ein Benutzer einen Text eingibt und dann das Backend aufruft, das dann eine GET-Anfrage an eine RESTful-API in einer anderen Domäne sendet. Ich möchte dann diese Informationen verwenden, um die Suchergebnisse anzuzeigen, aber ich habe keinen Zugriff auf die Variable, die ich aus irgendeinem Grund eingestellt habe.Rails: Calling API (eine andere Domain), um Suchergebnisse zu erhalten
houses_controller.rb
class HousesController < ApplicationController
def index
end
def search
@search_results = ["fake", "test", "results"]
end
end
index.html.erb
<%= form_tag("/houses/search", method: "get", remote: true) do %>
<%= label_tag(:query, "Search for:") %>
<%= text_field_tag(:query) %>
<%= submit_tag("Search") %>
<% end %>
<% if(@search_results.nil?) %>
<p>nil....</p>
<% else %>
<% @search_results.each do |res| %>
<p>
"result..."
</p>
<% end %>
<% end %>
routes.rb
Rails.application.routes.draw do
# For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html
root :to => "houses#index"
get "/houses/search" => "houses#search"
end
ich auf der Root-Seite starten und ich remote: true
in meinem form_tag weil Ich glaube, so machen Leute AJAX-Anfragen? Bin ich komplett auf der Suche nach einer Ajax-Anfrage? Ich würde es vorziehen, nur jQuery zu verwenden, aber es schien, als ob dies der Weg von Rails war.
Ich habe auch versucht, eine search.html.erb zu haben, weil ich beim Debuggen eine Nachricht gesehen habe, die "No template found for HousesController#search, rendering head :no_content"
gelesen hat, aber selbst wenn ich diese Datei hinzugefügt habe, hat es keinen Unterschied gemacht, weil es immer noch die index.html.erb rendert hat Datei und vollständig ignoriert die search.html.erb-Datei.
Ich habe auch versucht, @search_results
in der Indexaktion. Es funktioniert, wenn ich es dort einstelle, aber ich will nicht den statischen Wert, den ich dort einstellen würde, ich will den Wert, der erzeugt wird, wenn ich die "Suche" Aktion rufe.