2014-02-07 120 views
0

我有一個名爲messages_controller沒有表驗證模型數據庫

class MessagesController < ApplicationController 
    ... 
end 

和對用戶的電子郵件地址發送郵件的形式控制器:

= form_for [@user, @message], :validate => true do |f| 
    = f.text_field :subject, :maxlength => 100 
    = f.text_area :body, :placeholder => 'Your message...' 
    = f.submit 'Send message' 

我想驗證此形式,所以我創建了這個模型 - message.rb

class Message 
    include ActiveModel::Validations 
    include ActiveModel::Conversion 
    extend ActiveModel::Naming 

    attr_accessor :name, :body 

    validates_presence_of :name 
    validates_presence_of :body 

    def initialize(attributes = {}) 
    attributes.each do |name, value| 
     send("#{name}=", value) 
    end 
    end 

    def persisted? 
    false 
    end 
end 

然而,當我運行應用程序,我收到以下錯誤信息:

undefined method `reflect_on_association' for Message:Class 

什麼是錯誤的,我的形式的結構 - 控制器 - 模型?

我在這裏不是很有經驗,所以我會非常感謝每一個建議。

謝謝

回答

1

您使用嵌套資源路徑在form_for但是你還沒有告訴消息,它belongs_to :user。既然它沒有表格,你將無法做到。從您的form_for中刪除[@user, @message]。如果您仍然需要用戶ID,請將其添加爲hidden_field