0

Rails 3 で書かれた単純な静的 Web サイトがあります。

このサイトには、ページと呼ばれる 1 つのコントローラーがあり、各静的ページはビューとして提供されます。ページ/ホーム、ページ/概要、ページ/価格など。これはすべてうまく機能します。

単純なコンタクト機能を追加する必要があるという問題に遭遇しましたが、このためにモデル/コントローラー/ビューを理解するのに苦労しています。

私はすでに連絡先ビューを備えたページコントローラーを持っています。そのビューには詳細アドレスなどが含まれています。モデル属性を入力して電子メールを送信できるように、連絡先ビューにメッセージモデルを取得する必要があります。

のように、Pages Controller 内から新しいメッセージ モデルを作成することはできますか?

  class PagesController < ApplicationController

  def contact

   def new
    @message  = Message.new
   end

   def create
     @message = Message.new(params[:message])
     if @message.valid?
      # TO DO send message here using OS mail program.

      redirect_to root_url, notice: "Message sent! Thank you for contacting us."
     else
       render "new"
     end  
    end
  end

  def about

  end

  def products

  end

  def portfolio

  end

  def services

  end

end

または、ページコントローラーから contactus ビューを取り出して、メッセージという新しいコントローラーを作成する必要がありますか?

ありがとう。

4

1 に答える 1

1

たとえば、新しいアクションと作成アクションを使用して、連絡先と呼ばれる別のコントローラーを用意します

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

次に、メッセージを処理する別のモデル

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

 attr_accessor :name, :email, :subject, :body, :file

 validates :name, :email, :subject, :body, :presence => true
 validates :email, :format => { :with => %r{.+@.+\..+} }, :allow_blank => true

 end

あなたの属性はあなたが好きなものにすることができます.明らかにこれはあなたができることの単なる例です.

于 2013-01-17T15:08:05.313 に答える