2017-03-15 6 views
0

J'essaye de créer un formulaire qui permettra à un utilisateur de modifier un appel d'API pour la date de recherche. L'idée est de permettre à une personne de rechercher des astéroïdes proches de la Terre dans une fenêtre temporelle donnée en appelant l'une des API de la NASA. Pas vraiment sûr de savoir par où commencer.Formulaire Rails pour modifier l'appel API basé sur la date

Voici l'appel dans mon modèle. Vous pouvez voir start_date et date_fin, `que je veux éditer en fonction des informations utilisateur

class Astroid < ApplicationRecord 

def self.get_api_info 
    astroid = "https://api.nasa.gov/neo/rest/v1/feed?start_date=2017-03-15&end_date=2017-03-15&api_key=*****"                        
    request_to_astroid = Net::HTTP.get(URI(astroid)) 
    JSON.parse request_to_astroid 

end 

fin

Voici mon contrôleur très simple

def index 
@astroid_info = AstroidApi.get_api_info 

fin

Et la vue Je souhaite afficher après avoir sélectionné la sélection de date d'un utilisateur

<%= @astroid_info['near_earth_objects']["2017-03-15"][1]["close_approach_data"][0]["close_approach_date"]%> an astroid named <%= @astroid_info ['near_earth_objects']["2017-03-15"][1]["name"] %> missed us by: <%= @astroid_info ['near_earth_objects']["2017-03-15"][0]["close_approach_data"][0]["miss_distance"]["miles"] %> 

Voici le lien pour voir comment les données sont donné: https://api.nasa.gov/neo/rest/v1/feed?start_date=2017-03-15&end_date=2017-03-15&api_key=DEMO_KEY

+0

Ma première pensée est de remplacer le start_date et date_fin avec des variables peuplées de l'entrée utilisateur. Je ne suis pas sûr que ce soit la meilleure façon d'y parvenir car je ne suis pas sûr de savoir comment je pourrais modifier le modèle après avoir obtenu cette information –

Répondre

0

je vais dire dès le départ que je ne suis pas très familier avec Ruby ou Rails. Cependant, je pourrais peut-être vous guider dans une certaine direction ou essayer de confirmer vos pensées. Lorsque vous effectuez un appel d'API, vous avez la possibilité de décider quelles données envoyer avec l'appel. En créant un formulaire avec des dates que l'utilisateur peut sélectionner, vous pouvez ensuite extraire les valeurs d'entrée de ce formulaire pour les envoyer avec votre appel.

Vous pouvez utiliser l'entrée de sélecteur de date comme tel:

<form action="/action_page.php"> 
    <label for="date-selection">Date:</label> 
    <input type="date" name="date-selection"> 
    <button type="submit">Submit</button> 
</form> 

Ou utiliser deux de ces pour créer une plage de dates pour rechercher, en ajoutant une autre entrée de la date. Ensuite, prenez l'entrée de ceci à envoyer avec votre appel d'API. Désolé je ne peux pas vous aider à tirer les données de l'entrée pour votre appel, j'écris dans JS (pour le moment).

0

Controller:

@start_date = params[:start_date] 
@end_date = params[:end_date] 
@astroid_info = Astroid.get_api_info["element_count"] 
@astroid_date = Astroid.get_api_info["near_earth_objects"] 

Vue:

<%= form_tag searchApi_path, method: "get", html: { class: "form" } do %> 
<div class="form-group col-sm-6 col-md-offset-3"> 
<%= text_field_tag(:start_date, "", placeholder: "Enter date", class: "form-control") %> 
<%= text_field_tag(:end_date, "", placeholder: "Enter date", class: "form-control") %> 
</div> 

<div class= 'container'> 
<%= submit_tag "Search", class: "btn btn-success" %> 
<% end %>