2012-08-12 16 views
34

Ich versuche, Anweisungen aus dem Buch "Head First Rails" zu folgen und auf Seite 50 heißt es, ein Modell zu erstellen, aber ich kann kein Modell mit dem Befehl Schienen erstellen.Schienen generieren Modell

Wenn ich schreibe dies an dieser Eingabeaufforderung: localhost: ~ Hause

$
rails generate model ad name:string description:text price:decimal seller_id:integer email:string img_url:string 

ich dieses:

Usage: 
    rails new APP_PATH [options] 

Options: 
    -r, [--ruby=PATH]    # Path to the Ruby binary of your choice 
           # Default: /Users/home/.rvm/rubies/ruby-1.9.3-p125/bin/ruby 
    -b, [--builder=BUILDER]  # Path to a application builder (can be a filesystem path or URL) 
    -m, [--template=TEMPLATE]  # Path to an application template (can be a filesystem path or URL) 
     [--skip-gemfile]   # Don't create a Gemfile 
     [--skip-bundle]   # Don't run bundle install 
    -G, [--skip-git]    # Skip Git ignores and keeps 
    -O, [--skip-active-record]  # Skip Active Record files 
    -S, [--skip-sprockets]   # Skip Sprockets files 
    -d, [--database=DATABASE]  # Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite3/frontbase/ibm_db/sqlserver/jdbcmysql/jdbcsqlite3/jdbcpostgresql/jdbc) 
           # Default: sqlite3 
    -j, [--javascript=JAVASCRIPT] # Preconfigure for selected JavaScript library 
           # Default: jquery 
    -J, [--skip-javascript]  # Skip JavaScript files 
     [--dev]     # Setup the application with Gemfile pointing to your Rails checkout 
     [--edge]     # Setup the application with Gemfile pointing to Rails repository 
    -T, [--skip-test-unit]   # Skip Test::Unit files 
     [--old-style-hash]   # Force using old style hash (:foo => 'bar') on Ruby >= 1.9 

Runtime options: 
    -f, [--force] # Overwrite files that already exist 
    -p, [--pretend] # Run but do not make any changes 
    -q, [--quiet] # Suppress status output 
    -s, [--skip]  # Skip files that already exist 

Rails options: 
    -h, [--help]  # Show this help message and quit 
    -v, [--version] # Show Rails version number and quit 

Description: 
    The 'rails new' command creates a new Rails application with a default 
    directory structure and configuration at the path you specify. 

    You can specify extra command-line arguments to be used every time 
    'rails new' runs in the .railsrc configuration file in your home directory. 

    Note that the arguments specified in the .railsrc file don't affect the 
    defaults values shown above in this help message. 

Example: 
    rails new ~/Code/Ruby/weblog 

    This generates a skeletal Rails installation in ~/Code/Ruby/weblog. 
    See the README in the newly created application to get going. 
localhost:~ home$ 

Ich benutze Rails -v 3.2.8 und Ruby 1.9.3p125

+0

Haben Sie in Ihr Rails Projektverzeichnis cd? – PeterWong

+0

Ich denke, das könnte das Problem sein. Ich habe kein Projekt dir. Das Buch ist für Rails Version 2.1 geschrieben. In diesem Tutorial sollte ich ein Verzeichnis mit 'rails mebay' erstellen, aber dieser Befehl funktioniert nicht in Rails 3.2.8. Ich soll 'rails new mebay' nicht benutzen, weil ich die Modelle und Controller manuell erstellen soll. Ich denke, in dem Buch fehlt ein Schritt. – Livi17

Antwort

63

Der Code ist in Ordnung, aber Sie sind im falschen Verzeichnis. Sie müssen diese Befehle in Ihrem rails-Projektverzeichnis ausführen.

Der normale Weg, es von Grund auf neu zu bekommen ist:

$ rails new PROJECT_NAME 
$ cd PROJECT_NAME 
$ rails generate model ad \ 
    name:string \ 
    description:text \ 
    price:decimal \ 
    seller_id:integer \ 
    email:string img_url:string 
+1

Diese Lektion soll Ihnen zeigen, wie Sie manuell Modelle und Controller erstellen. Es besagt, dass die Verwendung von "rails new mebay" eine gerüstbasierte App erstellt, aber eine gerüstete App bietet mehr, als wir benötigen. Daher sollten wir das Modell zuerst manuell erstellen, indem wir "rails generate model ad blah: string" verwenden. Außer es sagt uns nicht, wie man das App-Verzeichnis zuerst erstellt. Ich denke, in dem Buch fehlt ein Schritt. – Livi17

+0

Ich werde versuchen, Ihren Vorschlag über – Livi17

+0

Der Befehl 'Rails New Mebay' generiert keine Scaffold App. Es produziert nur das Skaleton einer Rails-App. Ohne dies können Sie nicht beginnen, Ihre Anwendung zu schreiben. –

2

Sie müssen zuerst neue Rails-Anwendung erstellen.

laufen
rails new mebay 
cd mebay 
bundle install 
rails generate model ... 

Und versuchen Rails 3 Tutorial zu finden, gibt es eine Menge von Änderungen seit 2.1 Guides (http://guides.rubyonrails.org/getting_started.html) sind guter Ausgangspunkt.

1

Für mich, was geschah, war, dass ich die App mit Schienen neuen Schienen neuer chapter_2 erzeugen aber die RVM --default Schienen 4.0.2 gem hatte, aber mein chapter_2 Projekt ein neues gemset mit Schienen 3.2.16 verwenden. Ich

Also, wenn ich lief

rails generate scaffold User name:string email:string 

die Konsole

Usage: 
    rails new APP_PATH [options] 

zeigte So fixiert ich die RVM und die gemset mit den Schienen 3.2.16 Juwel, und erzeugt dann die App wieder dann

rails generate scaffold User name:string email:string 

ausgeführt und es funktionierte

7

Der Fehler zeigt an, dass Sie das Rails-Projekt noch nicht erstellt haben oder sich nicht im Projektverzeichnis von rails befinden.

Angenommen, Sie arbeiten an myapp-Projekt. Sie müssen zu diesem Projektverzeichnis in der Befehlszeile wechseln und dann das Modell generieren. Hier sind einige Schritte, die Sie beziehen können.

Beispiel: Angenommen, Sie haben nicht die Rails-Anwendung erstellen noch:

$> rails new myapp 
$> cd myapp 

nun das Modell aus der Commandline generieren.

$> rails generate model your_model_name