Heroku错误:ActionView :: Template :: Error(未定义的方法`validation码’用于#)

一切都在我当地的环境中正常运作。 当我尝试部署到heroku并最初查看我的网站时,它给了我以下错误:“我们很抱歉,但出了点问题。如果您是应用程序所有者,请查看日志以获取更多信息。”

当我检查我的“heroku日志”时,我发现此错误消息: ActionView :: Template :: Error(未定义的方法`captcha’用于-Message:0x007fc9df016930-)

HTML表单视图/ pages / index.html.erb

  "message_name_input message_input_default", :placeholder => " First Name" %> 

"message_name_input message_input_default", :placeholder => " Last Name" %>

true, :class => "message_email_input message_input_default", :placeholder => " * Email" %>

true, :class => "message_user-message_input", :placeholder => " * Write a message" %>

true, :class => "message_input_default", :placeholder => " * #{@a} + #{@b} = ?" %>

"messages_submit_button" %>

页面控制器

 class PagesController < ApplicationController def index @message = Message.new @a = rand(9) @b = rand(9) session["sum"] = @a + @b end end 

消息模型

 class Message < ActiveRecord::Base validates :email, :user_message, presence: true end 

消息控制器

 class MessagesController < ApplicationController def show end def new @message = Message.new end def create @message = Message.new(message_params) if params[:message][:captcha].to_i == session["sum"] && @message.save UserMailer.welcome_email(@message).deliver_now redirect_to '/message_sent' else redirect_to '/' end end private def message_params return params.require(:message).permit(:first_name, :last_name, :email, :user_message, :captcha) end end 

邮件迁移

 class CreateMessages < ActiveRecord::Migration def change create_table :messages do |t| t.string :first_name t.string :last_name t.string :email t.string :user_message t.string :captcha t.timestamps null: false end end end 

架构

 ActiveRecord::Schema.define(version: 20150712164426) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" create_table "admins", force: :cascade do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.integer "sign_in_count", default: 0, null: false t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" t.inet "current_sign_in_ip" t.inet "last_sign_in_ip" t.datetime "created_at" t.datetime "updated_at" end add_index "admins", ["email"], name: "index_admins_on_email", unique: true, using: :btree add_index "admins", ["reset_password_token"], name: "index_admins_on_reset_password_token", unique: true, using: :btree create_table "messages", force: :cascade do |t| t.string "first_name" t.string "last_name" t.string "email" t.string "user_message" t.string "captcha" t.datetime "created_at", null: false t.datetime "updated_at", null: false end end 

路线

 Rails.application.routes.draw do devise_for :admins resources :pages resources :messages resources :admins get '/' => 'pages#index' get '/new' => 'messages#new' post '/message_sent' => 'messages#create' get '/message_sent' => 'messages#show' end 

网站

 http://ChrisPelnar.com 

也许你在最初运行heroku run rake db:migrate之后添加了captchaheroku run rake db:migrate第一次迁移包含该迁移? 如果是这种情况,您需要重置数据库( 请注意这将清除所有数据

 heroku pg:reset DATABASE 

然后再次迁移它

 heroku run rake db:migrate 

在这些之后,validation码也应该在Heroku上可用。