2014-02-07 171 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