2016-03-26 2 views
0

Итак, я пытаюсь выполнить поиск по внешнему API (Nutrionix), и мне трудно понять, как отображать результаты.Отображение данных при поиске по внешнему API

я в настоящее время есть форма для поиска

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

Тогда у меня есть в моем FoodsController:

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, я получаю результаты.

Помощь была бы очень признательна. :)

+0

В чем проблема? Форма поиска никогда не срабатывала? – Pavan

+0

Форма поиска, похоже, не дает результатов, хотя если я просто покажу данные непосредственно на странице, которую я имею в контроллере, появятся данные. Я не уверен, как заставить данные появляться на странице после ее поиска. @Pavan – Nerl

ответ

0

форму поиска не ударять действие это предполагается, поскольку он имеет action = "/foods", который должен быть action = "/foods/search". Его изменение должно решить вашу проблему.

<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 Попробуйте 'action ="/search "' вместо – Pavan

+0

по какой-то причине, когда я это делаю, он обрабатывает его так же, как/foods/search, поэтому он дает мне никаких совпадений маршрута [GET] "/ foods/search" – Nerl

 Смежные вопросы

  • Нет связанных вопросов^_^