ruby-on-rails – Rails 3 – 未定义的方法`delivery_handler =
发布时间:2020-12-17 03:47:23 所属栏目:百科 来源:网络整理
导读:我有交货问题. 我得到了这个错误: NoMethodError in PagesController#send_messageundefined method `delivery_handler=' for # Message:0x00000004db9648app/mailers/contact.rb:22:in `send_email'app/controllers/pages_controller.rb:65:in `send_messa
我有交货问题.
我得到了这个错误: NoMethodError in PagesController#send_message undefined method `delivery_handler=' for #< Message:0x00000004db9648> app/mailers/contact.rb:22:in `send_email' app/controllers/pages_controller.rb:65:in `send_message' 无论如何,这是我的代码: /views/pages/contact.html.erb <h1><%= @page.title %></h1> <%= @page.content.html_safe %> <%= form_for @message,:url => "/pages/send_message" do |f| %> <% if flash[:notice] %> <% flash[:notice].full_messages.each do |msg| %> <p><%= msg %></p> <% end %> <% end %> <div class="field"> <%= f.label :email %> <%= f.text_field :email %> </div> <div class="field"> <%= f.label :body %> <%= f.text_area :body %> </div> <%= f.submit "Envoyer" %> <% end %> /models/message.rb class Message include ActiveModel::Validations include ActiveModel::Conversion extend ActiveModel::Naming attr_accessor :email,:body validates :email,:body,:presence => true validates :email,:format => { :with => %r{.+@.+..+} },:allow_blank => true def initialize(attributes = {}) attributes.each do |name,value| send("#{name}=",value) end end def persisted? false end end * /控制器/ pages_controller.rb * def send_message @message = Message.new(params[:message]) if @message.valid? Contact.send_email(@message).deliver redirect_to request.referer,:notice => "Le message a été envoyé." else redirect_to request.referer,:notice => "Vous n'avez pas entrer votre email." end end /app/mailers/contact.rb class Contact < ActionMailer::Base attr_accessor :email,:message default to: "bla@bla.com" default from: "blo@blo.com" def send_email(message) @message = message mail(:subject => "Nouveau contact blo") end end /config/environments/development.rb config.action_mailer.default_url_options = { host: 'localhost:3000' } config.action_mailer.perform_deliveries = true config.action_mailer.delivery_method = :sendmail config.action_mailer.sendmail_settings = { location: '/usr/sbin/sendmail',arguments: "-i -t -f contact@test.com" } 解决方法
在邮件程序中,删除attr_accessor:消息或将其称为其他内容.
ActionMailer :: Base已经有一个消息访问器来获取/设置正在构建的Mail :: Message,因此一些rails正在调用消息,期望获得一个Mail :: Message但是正在获取Message类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |