2016-03-26 20 views
0

Also, ich versuche, eine externe API (Nutrionix) zu durchsuchen und habe Probleme herauszufinden, wie die Ergebnisse angezeigt werden.Anzeigen von Daten bei der Suche über externe API

Im Moment habe ich ein Formular für

Suche
<form action = "/foods" method = "get"> 
    <div class = "field"> 
    <input type = "text" name = "searched_value" alt = "Search Foods" /> 
    </div> 
    <div class = "btn"> 
    <input type = "submit" name ="btn" value = "Search Foods"> 
    </div> 
</form> 

Dann habe ich in meinem FoodsController haben:

class FoodsController < ApplicationController 
    require 'faraday' 
    require 'json' 

    def search 
    @searched_food = params[:searched_value].split(" ").join("%20") 
    @response_body = Faraday.get("https://api.nutritionix.com/v1_1/search/#{@searched_value}?format=json?fields=item_name%2Citem_id%2Cbrand_name%2Cnf_calories%2Cnf_total_fat&appId=[MYAPPID]&appKey=[MYAPPKEY]").body 
    @parsed_response = JSON.load(@response_body) 
    end 
end 

Meine relevanten Strecken sind:

Rails.application.routes.draw do 
    get 'food_form' => 'foods#food_form' 
    get 'foods'  => 'foods#foods' 
    get 'search'  =>  'foods#search' 
end 

Es geht dann nur zurück zu Die Seite, die auf die Seite "Lebensmittel hinzufügen" verweist, auf der ich gerade versuche, Zeug zu bekommen, damit ich auftauchen kann :

Ich bekomme derzeit nichts für meine Ergebnisse als nur der Link zum Formular erscheint. Wenn ich jedoch die Controller-Informationen auf eine HTML-Seite lege, kann ich Ergebnisse sehen und wenn ich selbst zum nutrionix-Link gehe, bekomme ich Ergebnisse.

Hilfe wäre sehr willkommen. :)

+0

Was ist Ihr Problem? Hat das Suchformular nie funktioniert? – Pavan

+0

Das Suchformular scheint keine Ergebnisse zu produzieren, obwohl wenn ich nur die Daten direkt auf der Seite anzeigen, die ich in der Steuerung habe, Daten angezeigt werden. Ich bin mir nicht sicher, wie die Daten daher auf der Seite erscheinen sollen, nachdem sie gesucht wurde. @Pavan – Nerl

Antwort

0

Das Suchformular wird die Aktion nicht schlagen, um es angeblich, weil es action = "/foods" hat, die action = "/foods/search" sein sollte. Das Ändern sollte dein Problem lösen.

<form action = "/foods/search" method = "get"> 
    <div class = "field"> 
    <input type = "text" name = "searched_value" alt = "Search Foods" /> 
    </div> 
    <div class = "btn"> 
    <input type = "submit" name ="btn" value = "Search Foods"> 
    </div> 
</form> 
+0

Ah ja, ich habe das schon mal probiert, aber dann sagt es mir den Fehler: Keine Route stimmt überein [GET] "/ foods/search". Ich habe meine Routen zu meinem obigen Problem hinzugefügt. – Nerl

+0

@Nerl Try 'action ="/search "' statt – Pavan

+0

aus irgendeinem Grund, wenn ich das tue, es behandelt es genauso wie/foods/search, so gibt es mir keine Route übereinstimmt [GET] "/ foods/search" – Nerl