2014-02-07 5 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. Так как это без таблиц, вы не сможете. Удалите [@user, @message] с form_for. Если вам все еще нужен идентификатор пользователя, добавьте его с помощью hidden_field.

Смежные вопросы