Sagen wir, ich habe das getan:
script / Controller zu Hause generieren
Und in der Heimat-Controller machte eine Methode ..
%Vor%Wie würde ich diese Methode in index.html.erb nennen?
Beim Ruby-Lernen wurde nur gesagt, dass das washd.rb im Terminal laufen soll um den Code zu starten, den Sie in dieser Datei geschrieben haben. Nur neugierig wie das würde mit Schienen funktionieren.
Ich nehme an, Sie haben einen Rails-Server ausgeführt?
Theres zwei Möglichkeiten, zuerst konnten Sie eine Hilfsmethode in der Steuerung sagen, indem Sie:
%Vor%in Ihrem Controller.
Alternativ wäre die bessere Lösung, Ihre say-Methode in die home_helper (?) .rb-Hilfsdatei zu verschieben.
Sie können dies aufrufen, indem Sie einfach & lt;% say% & gt; in Ihrer Sicht Datei.
Beachten Sie, dass ein puts
genau das, was in Ihrer Zeichenkette ist, in STDOUT einträgt, nicht in Ihren Ansichten, wenn Sie nur ein wenig Text schreiben möchten, wäre es besser, wenn Sie nur eine Zeichenkette ausgeben und die Erb Ausgabemechanismus in Ihrer Sicht, zB
application_helper.rb
%Vor%index.html.erb
%Vor%puts ist sehr nützlich für Unit-Test-Debugging, wo Sie den Inhalt eines Objekts herausfinden möchten
%Vor%Wenn Sie dagegen eine Ausgabe in das Protokoll wünschen, können Sie Folgendes tun:
%Vor%Kurz gesagt: Sie tun das nicht.
Was Sie tun:
Sie rufen eine Aktion auf einem Controller auf. Für jede Aktion gibt es eine entsprechende Ansicht, z. "say.html.erb" im Verzeichnis views / home.
Um diese Aktion aufzurufen und ihre entsprechende Ansicht anzuzeigen, können Sie in Ihrer index.html.erb
<%= link_to 'Say it', :controller => 'home', :action => 'say', :someadditionalparameter => 'foo' %>
eingeben
Wenn Sie auf :someadditionalparameter
in der Aktion say
zugreifen wollten, würden Sie dies mit params[:someadditionalparameter]
tun und würden in diesem Fall 'foo'
erhalten.
Nun, die Ansicht ruft normalerweise nicht den Controller an - es geht anders herum, von dem, was ich weiß. Die Anfrage kommt herein, Rails analysiert die URL entsprechend Ihren Routen config / routes.rb und leitet die Anfrage an die entsprechende Aktion im entsprechenden Controller weiter. Standardmäßig liefert Rails eine Route für / controllername / aktionsname, so dass Sie diese für das einfache Herumspielen mit dem verwenden können, was Rails für Sie tut.
Nachdem der Controller ausgeführt wurde, rendert Rails automatisch die zugehörige Ansicht, die per Konvention denselben Namen wie ihre Aktion hat. Die automatisch genutzte Ansicht für Ihre "Say" -Aktion im Home-Controller finden Sie in Ihrer Verzeichnisstruktur unter app / views / home / say.html.erb. Sie können dieses automatische Rendering überschreiben, indem Sie in Ihrer Controller-Aktion render
aufrufen, z. B. render :template => :index
.
Und schließlich, wie Konstantinos sagte, müssen Sie den Server starten, bevor Sie in einem Webbrowser auf die Website zugreifen können. Es wird standardmäßig auf http://127.0.0.1:3000/
gesetzt. Um die Aktion des Heim-Controllers zu erreichen, gehen Sie zu http://127.0.0.1:3000/home/say
.
Zunächst müssen Sie die Rails-Anwendung
ausführenSie tun dies, indem Sie von der Befehlszeile aus in Ihr App-Stammverzeichnis von rails gehen und
eingeben %Vor% Öffnen Sie dann Ihren Browser und geben Sie http://127.0.0.1:3000/home/say
Dies sollte Sie auf den Controller nach Hause bringen, Aktion sagen
Bearbeiten: Wie der Rest der Leute gesagt hat und ich habe vergessen zu erwähnen, dass Sie eine Ansicht benötigen (eine Datei nach Konvention, die sich unter app/views/CONTROLLER_NAME/ACTION_NAME.html.erb
befindet, in Ihrem Beispiel ist app / views / home / say.html.erb) wenn Wenn Sie keine solche Datei haben, wird Ihre Aktion nicht angezeigt und Sie erhalten eine Fehlermeldung.
Tags und Links ruby ruby-on-rails