2012-04-03 18 views
0

私はアドレス帳の基本的なアプリケーションを作成しており、連絡先をユーザーに関連付けることを望みます。連絡先をユーザーに関連付ける

ユーザーの認証が設定されており、連絡先テーブルをユーザーとリンクしようとしています。私は2つの別個のコントローラを持っています.1つはユーザ用、もう1つは連絡先用です。私の計画はbelongs_to:userとhas_many:contactsを使ってそれらを関連付けることです。

私は絶対に私は私の知る限り、私は私の連絡先コントローラで正しく新しい定義されていますが、何らかの理由で、私はこれを動作させることはできません承知していますよう

undefined method `new' for Contact:Module 

かかわらず、受信し続けるエラーにより困惑しています。

私は、現時点では

ルートの次のコードを持っている:

Contact::Application.routes.draw do 

get "sessions/new" 
get "logout" => "sessions#destroy" 

controller :user do 
get "signup" => "user#new" 
end 

resources :users, :controller => 'user' 

controller :sessions do 
get "login" => "sessions#new" 
post "login" => "sessions#create" 
delete "logout" => "sessions#destroy" 
end 

controller :dashboard do 
get "home" => "dashboard#home" 
end 

controller :contact do 
get "newcontact" => "contact#new" 
end 

resources :contacts, :controller => 'contact' 

root :to => 'sessions#new' 


end 

問い合わせコントローラ

class ContactController < ApplicationController 
def new 
@contact = Contact.new 
end 

def create 
@contact = Contact.new (params[:contact]) 
    if @contact.save 
    redirect_to root_url 
    else 
    render "contact#new" 
end 
end 
end 

問い合わせ/新しいフォーム

<%= form_for @contact do |f| %> 

<% if @contact.errors.any? %> 
    <div class="error_messages"> 
    <h2>Form is invalid</h2> 
     <ul> 
      <% for message in @contact.errors.full_messages %> 
       <li><%= message %></li> 
      <% end %> 
     </ul> 
    </div> 
<% end %> 
<div class = "name-field"> 
    <%= f.text_field :name, :placeholder => "Name" %> 
</div> 

<div class = "company-field"> 
    <%= f.text_field :company, :placeholder => "Company" %> 
</div> 

<div class = "email-field"> 
    <%= f.text_field :email, :placeholder => "Email" %> 
</div> 

<div class = "phone-field"> 
    <%= f.text_field :phone, :placeholder => "Phone" %> 
</div> 

<div class = "mobile-field"> 
    <%= f.text_field :mobile, :placeholder => "Mobile" %> 
</div> 

<div class="actions"><%= f.submit "Add Contact" %></div> 
</div> 
<% end %> 

人々が提供できるすべてのヘルプをに私は完全に固執しているので、このエラーを修正することは本当に非常に高く評価されるだろう!私はそれが接触という言葉の多元化と関係するかもしれないと思うが、それを修正する正しい方法を見つけることができないようだ。

ご協力いただきありがとうございます。 Tom

+0

ContactController Mishaux

+0

はあなたがエラーのバックトレースを提供できることを与えますか? – Ekampp

+0

@ミショー - ContactControllerをContactsControllerに変更しようとしましたが、代わりに '期待されるC:/Sites/contact/app/controllers/contact_controller.rbを受け取ってContactController'を定義しています。 –

答えて

2

application.rb(連絡先)で定義されたモジュールとモデルクラス(連絡先)間で、レールが混乱しています。あなたはmodule Contactを1つの場所に、class Contactを別の場所に置くことはできません(実際には、開発モードに入っているので、contactモジュールが存在するということは、contact.rbファイルを参照していないことを意味します)

あなたはそのうちの1つの名前を変更する必要があります。アプリケーションを変更する方が簡単かもしれません。Contact::Applicationのすべてのインスタンスを(例えば)ContactApp::Applicationに置き換え、application.rbのmodule ContactをモジュールContactAppに変更してください。また、アプリケーションモジュールの名前をほとんど入力しなくても、少し不協和音の名前を持つことは大したことではありません。

+0

このフレッドのおかげで、100%働いていて、連絡先が私のデータベースに正しく保存されています。この素晴らしい答えにもう一度感謝します! –

関連する問題