2016-06-23 5 views
0

Ich verwende Inline C, um etwas Ausgang zu bekommen. Was ich versuche, ist, den Inline-C-Code auszuführen und seine Ausgabe über den Controller zur Schienenansicht zu rendern. Das Codefragment für Inline-C ist:Inline C Ausgabewert speichern auf Schienen Controller

class Something 
    inline(:C) do |builder| 
    builder.c 'int test1() { 
    char array[20] = "-------Hello from Ruby!------\n"; 
    printf("%s", array); 
    return array; 
    }' 
    end 
end 

Objekt wird in der Steuerung der Schienen-Anwendung auf diese Weise erstellt.

def index 
    something = Something.new 
    @something = something.test1 
end 

Jetzt, wenn ich versuche, Ausgangswert des Inline-C zu speichern, es ist einfach nicht anwendbar, während die Ausgabe angezeigt wird auf den Schienen lügen (nicht auf der Log-Datei). Ich bin sicher, dass der angezeigte Wert über return array; der Something Klasse ist. Die Index-Methode hat @something Instanz-Set, die nur einige Wert wie 4421355280 speichert, aber nicht den Wert. dh "-------Hello from Ruby!------" Ich habe einen Index, um die entsprechende Controller-Aktion zu rendern.

<h1>Travel</h1> 
<h3><%= @something %></h3> 

Wie kann ich möglicherweise Speicher Ausgabewert "-------Hello from Ruby!------" in @something? Output of inline C

Vielen Dank im Voraus.

Antwort

0

Sorry Leute, es scheint, dass ich ein Problem bei der Rückkehr Typ C-Code hatte. Es sollte sein:

class Something 
    inline(:C) do |builder| 
    builder.c 'char * test1() { 
    char array[20] = "-------Hello from Ruby!------\n"; 
    printf("%s", array); 
    return array; 
    }' 
    end 
end 
Verwandte Themen