1

何が間違っているのかよくわかりません。

非常に多くの人が同様の問題を抱えていることがわかります 。Rails の連絡フォームが機能しないRails 3 の連絡フォーム、未定義のメソッド? Rails 3 の Contact Us フォームなど。

難しいことですが、かなり多くの人がこれを非常に簡単だと考えていることもわかります-連絡先フォームを作成する.
人気のアクションメーラー ガイドを参照: http://guides.rubyonrails.org/action_mailer_basics.htmlhttp://railscasts.com/episodes/206-action-mailer-in-rails-3

私は実際には開発者ではないので、これはかなり混乱します。

とにかく、私のメールアカウントのメールとしてメッセージを送信するだけの簡単な連絡先フォームを作成する必要があります。メッセージをデータベースに保存したくありません。

これが私のコードです:

/app/models/message.rb

  class Message
    include ActiveModel::Validations
    include ActiveModel::Conversion
    extend ActiveModel::Naming

    attr_accessor :name, :email, :content


    def initialize(attributes = {})
     attributes.each do |name, value|
     send("#{name}=", value)
    end
  end

   def persisted?
    false
   end
  end

app\controllers\messages_controller.rb

 class MessagesController < ApplicationController
  def new
   @message = Message.new
  end

  def create
   @message = Message.new(params[:message])
   MessageMailer.send(@message).deliver
   flash[:notice] = "Message sent! Thank you for contacting us."
   redirect_to root_url
  end
end

/app/メーラー/message_mailer.rb

  class MessageMailer < ActionMailer::Base
    default :to => "emils.veveris@thrillengine.com"

    def send(message)
      @message = message
      mail( :subject => " Test ", :from => @message.email ) do |format|
      format.text
    end
  end
end

アプリ/ビュー/メッセージ/new.html.erb

<h1> "Contact Us"  </h1>

  <%= form_for @message do |f| %>

  <p>
   <%= f.label :name %><br />
   <%= f.text_field :name %>
  </p>

  <p>
   <%= f.label :email %><br />
   <%= f.text_field :email %>
  </p>

  <p>
  <%= f.label :content, "Message" %><br />
  <%= f.text_area :content %>
  </p>
  <p><%= f.submit "Send Message" %></p>
 <% end %>

app/views/message_mailer/sent.text.erb

Message sent by <%= @message.name %>

<%= @message.content %>

と development.rb

N1::Application.configure do

    # Don't care if the mailer can't send
    config.action_mailer.perform_deliveries = true
    config.action_mailer.raise_delivery_errors = true

end

ログ ファイルにエラーは表示されず、エラー メッセージも表示されません。メールが届かないだけです。

私が間違っていることを教えてください。

ありがとう!

4

1 に答える 1

0

これは少し古いですが、いくつかの概念が役立つかもしれません...それはまさにあなたがやろうとしていることです.

http://railscasts.com/episodes/193-tableless-model

于 2012-06-30T14:07:18.690 に答える