2012-06-21 17 views
0

我把一個接觸的形式一起使用下面的教程:http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/接觸形式沒有方法誤差爲Rails 3

我已經照着所有的說明,但由於某些原因,當我嘗試我不斷收到此錯誤訪問我的應用程序中的聯繫頁面:

NoMethodError in Contact#new 

undefined method `[]' for nil:NilClass 
Extracted source (around line #1): 

1: <%= form_for @message, :url => contact_path do |form| %> 
2: <fieldset class="fields"> 
3:  <div class="field"> 
4:  <%= form.label :name %> 

我在這裏錯過了什麼?

new.html.erb

<%= form_for @message, :url => contact_path do |form| %> 
<fieldset class="fields"> 
<div class="field"> 
    <%= form.label :name %> 
    <%= form.text_field :name %> 
</div> 

<div class="field"> 
    <%= form.label :email %> 
    <%= form.text_field :email %> 
</div> 
<div class="field"> 
    <%= form.label :subject %> 
    <%= form.text_field :subject %> 
</div> 

<div class="field"> 
    <%= form.label :body %> 
    <%= form.text_area :body %> 
</div> 
</fieldset> 

<fieldset class="actions"> 
<%= form.submit "Send" %> 
</fieldset> 
<% end %> 

contact_controller.rb

class ContactController < ApplicationController 

def new 
    @message = Message.new 
end 

def create 
    @message = Message.new(params[:message]) 

if @message.valid? 
    NotificationsMailer.new_message(@message).deliver 
    redirect_to(root_path, :notice => "Message was successfully sent.") 
else 
    flash.now.alert = "Please fill all fields." 
    render :new 
end 
end 
end 

notifications_mailer.rb

class NotificationsMailer < ActionMailer::Base 

default :from => "[email protected]" 
default :to => "[email protected]" 

def new_message(message) 
    @message = message 
    mail(:subject => "[[email protected]] #{message.subject}") 
end 
end 
+0

您是否正確設置了路線? –

+0

是的,路線絕對好。任何其他想法? – user1429496

+0

我看到2種可能性。您的消息模型存在問題,或者您應該重新啓動服務器。 –

回答

2

我有一個與本教程類似的問題。這是因爲我忘記從Message類中刪除< ActiveRecord::Base。我也忘了將attr_accessible更改爲attr_accessor。你可能想仔細檢查這兩點。