4 Stimmen

Ruby on Rails einfache Seite ohne Datenbankmodell

Ich bin ein Anfänger in Ruby und Rails, daher ist dies wahrscheinlich eine einfache Frage.

Wie sollte ich eine einfache Seite einrichten, die keine eigenen Datenbanktabellen benötigt? In meinem Fall habe ich beispielsweise eine Website, auf der Lieder und Künstler gespeichert werden. Wie erstelle ich einfach eine HILFE-Seite ohne Intelligenz, nur statisches html. Ich benötige auch eine DURCHSUCHEN-Seite, auf der der Benutzer auswählen kann, ob er nach Künstlern oder Liedern suchen möchte. Diese Seite wird keine Datenbanktabellen haben, jedoch wird sie eine Liste von Links von A-Z enthalten, wobei die Anzahl der Beiträge für jeden Buchstaben angezeigt wird, daher benötigt sie eine Datenbankinteraktion für Tabellen, die sie nicht selbst besitzt.

Sollte ich einfach Controller für HILFE und DURCHSUCHEN erstellen, oder werden sie auch Modelle benötigen? Unter Verwendung von Rails 2, welche script/generate-Werkzeuge sollte ich verwenden und was sollte ich sie für mich tun lassen?

5voto

jvnill Punkte 28974

Ich erstelle normalerweise einen PagesController, der die statischen Seiten wie Über, FAQ oder Datenschutz anzeigt.

Was du tun musst, ist den Controller zu generieren, indem du

script/generate controller pages

dann füge das folgende in deiner config/routes.rb hinzu

map.resources :pages, :only => :show

In deinem PagesController

def show
  # filter the params[:id] here to allow only certain values like
  if params[:id].match /browse|help/
    render :partial => params[:id]
  else
    render :file => "/path/to/some/404_template", :status => 404
  end
end

Dann musst du nur noch Partials in app/views/pages/ hinzufügen

#in /app/views/pages/_help.html.erb

Dies ist der Hilfsbereich

2voto

John Topley Punkte 110122

Ich habe den unten gezeigten Ansatz in der Vergangenheit verwendet. Richten Sie eine benannte Route in config/routes.rb ein:

map.page ':page', :controller => 'pages', :action => 'show',
         :page => /browse|help/

—Beachten Sie, dass der :page Parameter auf bestimmte Werte beschränkt ist (die URLs /browse und /help). Mit dieser Route können Sie Links wie diesen erstellen:

<%= link_to 'Hilfe', pages_path('help') %>

Erstellen Sie schließlich einen Controller (app/controllers/pages_controller.rb):

class PagesController < ApplicationController
  def show
    render params[:page] # => rendert /app/views/pages/.html.erb
  end
end

Sie können die show Methode innerhalb des Controllers ändern, wenn Sie mehr Flexibilität benötigen. Zum Beispiel möchten Sie möglicherweise verschiedene Layouts für verschiedene Seiten verwenden. Für dieses Szenario können Sie die Logik basierend auf dem Wert des eingehenden :page Parameters verzweigen.

1voto

Dmitry Maksimov Punkte 2851

Controller und Models sind in Rails nicht eng miteinander verbunden. Es ist nur eine Konvention. Sie können also problemlos einen Controller erstellen, der mit keinem Model verbunden ist.

1voto

edthix Punkte 1752

Wenn es sich um reine Statik handelt (wie z.B. *.html), können Sie es einfach in Ihrem öffentlichen Ordner hinzufügen. Zum Beispiel:

public/test.html public/hello.html public/about.html

1voto

ZX12R Punkte 4650

Es ist nicht zwingend erforderlich, für jeden Controller ein Modell zu haben. Es handelt sich nur um eine Konvention zur einfacheren Zuordnung

Angenommen, die Seite, die Sie anzeigen möchten, heißt about_us

Fügen Sie einen Controller about_us_controller.rb hinzu und erwähnen Sie ihn in routes.rb

Fügen Sie eine Ansicht about_us/index.html.rb hinzu

Wenn Sie möchten, dass die Ansicht kein Layout verwendet, sagen Sie einfach

 render :layout => false

in Ihrem about_us.rb

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X