我正在使用active_attr和simple_form。
当我导航到应该显示我的表单的页面时,出现以下错误:
undefined method `new_record?' for #<Message body: nil, email: nil, name: nil, subject: nil>
这是我的模型:
class Message
include ActiveAttr::Model
attribute :name
attribute :email
attribute :subject
attribute :body
validates :name, :email, :subject, :body, :presence => true
validates :email, :format => { :with => %r{.+@.+..+} }, :allow_blank => true
end
我的控制器:
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
最后我的观点:
<%= simple_form_for @message, :url => contact_path do |f| %>
<%= f.input :name %>
<%= f.input :email %>
<%= f.input :subject %>
<%= f.input :body %>
<%= f.button :wrapped, :submit %>
<% end %>
显然,我包含的额外功能是为 Twitter 引导程序制作一个包装按钮,如 https://github.com/plataformatec/simple_form/wiki/Twitter-Bootstrap-v2-and-simple_form-v2 发现的那样破坏了它。
此错误
是由于 v0.7.0 中修复的 active_attr 中的错误造成的。升级可解决此问题。