2012-04-19 33 views
1

私はRailsに慣れ親しんでおり、足場なしでそれをしようとしています。本当にそれを学ぶでしょう。私はrailstutorial.orgを見ましたが、私のプロジェクトが行っていたことから分かれ、別のレールプロジェクトやコピー編集されたコードで足場を作りました。Rails 3 - コントローラのメソッドnewのNoMethodError

環境: Ubuntuの明晰、 ルビー1.9.3p125、 レール3.2.1

http://localhost:3000/

NoMethodError in DreamController#new 

undefined method `new' for Dream:Module 
Rails.root: /vagrant/dream 

Application Trace | Framework Trace | Full Trace 
app/controllers/dream_controller.rb:5:in `new' 

はここに私のルートをですアプリケーションのルートに行くとき、私はこのエラーを取得しています。 rb

Dream::Application.routes.draw do 
    resources :dreams do 
    resources :interpretations 
    end 
    root :to => 'dream#new' 
end 

ここは私のコントローラです:

class DreamController < ApplicationController 
    def new 
    @dream = Dream.new 

    respond_to do |format| 
     format.html # new.html.erb 
    end 
    end 

    def create 
    @dream = Dream.new(params[:dream]) 

    respond_to do |format| 
     if @dream.save 
     format.html { redirect_to @dream, notice: 'Dream was successfully created.' } 
     else 
     format.html { render action: "new" } 
     end 
    end 
    end 
end 

アプリ/ビュー/夢/ new.html.erbだけです:

<%= render 'form' %> 

アプリ/ビュー/夢/ _form.html.erb:

<%= form_for(@dream) do |f| %> 
    <% if @dream.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@dream.errors.count, "error") %> prohibited this dream from being saved:</h2> 

     <ul> 
     <% @dream.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 

    <div class="field"> 
    <%= f.label :text %><br /> 
    <%= f.text_area :text %> 
    </div> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

はここに私のモデルです( 2つの別々のファイル)に:

class Dream < ActiveRecord::Base 
    validates :text, :presence => true 
    has_many :interpretations 
end 

class Interpretation < ActiveRecord::Base 
    validates :text, :presence => true 
    belongs_to :dream 
end 

私は今、数時間のためにGoogleで検索しましたし、これを理解することはできません。私は助けていただければ幸いです!

+0

私のモデルに関連していると思います。私は '1.9.3p125レールコンソールでこのエラーを取得:001> @dream = Dream.new NoMethodError:夢のための '新しい' 未定義のメソッド:module'の返信用 – nnotreall

答えて

0

は、コントローラ名を複数作ってみましょう:

root :to => 'dreams#new' 

をし、ルーティング設定ファイルを変更する場合、サーバーを再起動することを忘れないでください。

+0

ありがとう!これは私にエラーを与えます: '初期化されていない定数DreamsController' 私はDreamControllerにDreamControllerの名前を変更しました。 – nnotreall

1

私は問題を発見しました:私はrails new dreamと私のレールプロジェクトを作成し、同様にモデル '夢'を持っていました。 Railsはモデルクラスではなくアプリケーションクラスを調べていました。私はモデルを作成し、その手の中で手を叩きました(振り返ってみると恐ろしいアイデアです)。これは非常にイライラしていますが、私はかなり学びました!

関連する問題