2017-01-18 1 views
1

ich diese curl Skript in meinem Ruby zu laufen versuchen Rails-Anwendung:wie ein Rubin Variable verwenden, in der Locke (bash) Skript Schienen

%x{ curl -F token='08F14AE57696E458BA6FC6A203F57E69' -F overwriteBehavior=normal 
-F content=record -F type=flat -F format=json 
-F data='[{"record_id":"123","seat_id_seq":"bbb","address":"bbb","price":"bbb","email":"bbb","tickets1_complete":"2"}]' 
'https://cri-datacap.org/api/' } 

und seine Arbeit gut. Jetzt möchte ich die Werte nicht fest codieren wollen, also versuche ich diese Werte durch die Variable zu geben.

Diese Variable enthält den Wert aus dem Textfeld auf meiner Rails-Anwendung:

%x{ curl -F token='08F14AE57696E458BA6FC6A203F57E69' -F overwriteBehavior=normal 
-F content=record -F type=flat -F format=json 
-F data='[{"record_id":"#{params[:record_id]}","seat_id_seq":"bbb","address":"bbb","price":"bbb","email":"bbb","tickets1_complete":"2"}]' 
'https://cri-datacap.org/api/' } 

so habe ich für eine Variable record_id versucht, aber es funktioniert nicht .. Dieses Skript in meinem Controller geschrieben wird.

+3

Warum nicht eine HTTP-Bibliothek anstelle von Curl verwenden? – virtuexru

+0

Ich bin nicht sicher, wie man das benutzt. –

+0

Hier sind einige einfache Beispiele, um loszulegen. Es ist eine Ruby-Standardbibliothek. https://ruby-doc.org/stdlib-2.1.3/libdoc/net/http/rdoc/Net/HTTP.html – virtuexru

Antwort

3

Ignorieren die Tatsache, dass curl extern verwenden, wenn Bibliotheken wie curb existieren, mit %x{...} für diese ist extrem chaotisch. Was Sie tun möchten, ist Anruf system:

data = [ 
    { 
    record_id: params[:record_id], 
    seat_id_seq: "bbb", 
    address: "bbb", 
    price: "bbb", 
    email: "bbb", 
    tickets1_complete: 2 
    } 
] 

system(
    "curl", 
    "-F", "overwriteBehavior=normal", 
    "-F", "content=record", 
    "-F", "type=flat", 
    "-F", "format=json", 
    "-F", "data=#{JSON.dump(data)}", 
    'https://cri-datacap.org/api/' 
) 

Wenn Sie JSON-Daten schreiben, versuchen Sie und verwenden JSON.dump oder .to_json Ihr Dokument ist 100% gültig zu gewährleisten.

+0

es wirft Fehler: undefinierte Methode Payload –

+0

ich ersetzt Payload mit Daten, aber es ist immer noch nicht Einfügen von Daten. –

+0

Es sieht so aus, dass es keine Daten in params [: record_id] –