我有一个名为 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
我的表格结构 - 控制器 - 模型有什么问题?
我在这里不是很有经验,所以我非常感谢你的每一条建议。
谢谢
答案 0 :(得分:1)
您在form_for
中使用的是嵌套资源路径,但您尚未告知消息belongs_to :user
。因为它是无用的,你将无法做到。从[@user, @message]
中删除form_for
。如果您仍然需要用户ID,请添加hidden_field
。