2016-03-26 11 views
0

外部API(Nutrionix)を検索しようとしていて、結果を表示する方法がわかりません。外部APIで検索する際にデータを表示する

私は現在、それから私は私のFoodsControllerに

<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> 

を検索するためのフォームを持っています

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 

私の関連するルートは、次のとおりです。

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

それは、その後戻ったばかりに行きます「食品を追加する」ページにリンクしているページで、私は現在、物事を表示しようとしています。 :

<div class = "description"> 
    <%= link_to "Add foods", food_form_path %> 
    <%= @parsed_response%> 
    <%= @response_body%> 
    <%= @searched_food %> 
</div> 

現在のところ、フォームへのリンクが表示されるため、結果には何も表示されません。しかし、コントローラの情報をhtmlページに置くと結果が表示され、自分自身でnutrionixリンクに行くと結果が得られます。

助けていただければ幸いです。それはaction = "/foods/search"あるべきaction = "/foods"を持っているので、:)

+0

あなたの問題は何ですか?検索フォームは機能しませんでしたか? – Pavan

+0

コントローラにあるページに直接データを表示してもデータが表示されても、検索フォームに結果が表示されないようです。私はどのようにデータが検索された後にページに表示されるようにするかわかりません。 @Pavan – Nerl

答えて

0

検索フォームは、それがになって行動を打つされていません。それを変更すると問題が解決するはずです。

<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

ああ、私はそれを前に試しましたが、エラーが表示されます:[GET] "/ foods/search"と一致するルートはありません。上記の私のルートにルートを追加しました。 – Nerl

+0

@Nerl代わりに – Pavan

+0

を試してみると何かの理由で/ action/searchと同じ扱いとなるので、[GET]/foods/searchと一致するルートはありません – Nerl

関連する問題