2012-04-12 1 views
0

Ich lerne Ruby on Rails. Ich habe einen einfachen Link wie folgt:Ruby on Rails - Wo schreibe ich Geschäftslogik während der Bearbeitung einer Anfrage? (Neuling)

<%= link_to "Alex Link", alexes_path(@alex) %> 

dann habe ich es in routes.rb wie folgt verlegt:

resources :alexes 

    get "home/index" 

dann bin ich ein wenig unklar, aber ich denke, es ist an diesem Teil der geht Controller:

def index 
    #@alexes = Alex.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @alexes } 
    end 
    end 

Bin ich richtig, dass es in diesem Teil der Steuerung geht?

Dann viel passiert nichts und es geht weiter zur nächsten Seite, die so index.html.rb unter views\alexes

ist, was ich fragen, ist - wenn ich brauchte einige Business-Logik zu tun, würde ich schreiben, dass im Controller-Snippet? Wo im Snippet? Ein Beispiel wäre schön, einen Blick darauf zu werfen.

Außerdem möchte ich eine Verbindung zu einer MongoDb-Datenbank herstellen. Würde ich das auch in der Mitte des Controllers schreiben?

Dank!

+0

Was ist "alex"? Eine statische Seite? - Ich würde auch vorschlagen, zu lesen: http://edgeguides.rubyonrails.org/getting_started.html, wenn Sie diese Guides noch nicht kennen. - Nur zur Klarstellung. Normalerweise sollten Sie vermeiden, Business-Logik in Controller zu setzen. – Deradon

+0

@Deradon Alex ist mein Name :) Es ist eine Testseite, die jetzt sehr statisch ist, aber ich plane, es mit komplexeren Sachen zu ändern, als ich lerne, wie man das macht :) – Genadinik

+0

@Deradon aber wenn nicht die Controller, wo? Es scheint, dass direkt nach dem Auftreffen auf den Controller die nächste Ansicht angezeigt wird. Das ist verwirrend. – Genadinik

Antwort

0

Ja, Controller sind für Geschäftslogik. Modelle repräsentieren die Daten, Ansichten repräsentieren die Anzeige (normalerweise eine Webseite) und Controller sind genau dort, wo Geschäftslogik geht.

Prüfen Sie diese Seite für eine hervorragende Tutorial: http://ruby.railstutorial.org/

+0

danke, aber beachten Sie oben, das ist Gegenteil von dem Deradon sagte. Oder missverstehe ich euch? – Genadinik

+2

Fette Modelle, dünne Controller. Das ist die beste Vorgehensweise. Versuchen Sie, nicht alles in den Controller zu legen. Zum Beispiel: Wenn Sie eine Methode wie 'backup_user (user)' in Ihrem Controller haben, sollten Sie diese in 'User # backup' verschieben und einfach in Ihrem Controller aufrufen. - Oder nur aus dem RailsApi: "Die Model-Schicht [..-] kapselt die Geschäftslogik" – Deradon