1

こんにちは、モデルのないシンプルな Rails サイトがあります。静的ページを提供するためだけに使用されます。

このサイトには Pages コントローラーがありますが、これはパーシャルで構成された 1 つのホームページのみを提供しています。

そのようなapp/views/pages/home.html.erb

<%= render 'layouts/about' %>
<%= render 'layouts/services' %>
<%= render 'layouts/rooms' %>
<%= render 'layouts/breakfast' %>
<%= render 'layouts/guestbook' %>
<%= render 'layouts/contact' %>

ホームページは、ページを自動スクロールする html5/javascript を使用しています。そのため、各セクションの先頭に # を付けて、そのセクションに自動スクロールできるようにします。

   <li><a class="home" href="#home">Home</a></li>
   <li><a class="services" href="#services">Tarrifs</a></li>
   <li><a class="portofolio" href="#portofolio">Rooms</a></li>
   <li><a class="breakfast" href="#breakfast">Breakfast</a></li>
   <li><a class="contact" href="#contact" >Contact </a></li>
   <li><a class="services" href="#services">Blog / Whats On.</a></li>
   <li><a class="guestbook" href="#guestbook">Guest Book</a></li>
   <li class="description">Take a look.</li>

これはすべてうまくいきます。 開発サイトはこちら

私の質問/問題は次のとおりです。レールタイプのContactUSページを追加したいと思います。

さまざまなチュートリアルに従ってください:

簡単お問い合わせ

Rails 3 お問い合わせ

これらはすべて、メッセージ モデル、ActionMailer、および連絡先コントローラーを備えていることを示しています。これは、別の連絡先コントローラーが必要な場合に機能します。

contactUs フォームを作成する方法を理解しようとしていますが、contact コントローラーを使用するとすべての URL ルートが変更されるように見えるため、ページコントローラーを保持して自動スクロールを機能させます。これはおそらくRailsの方法ではないことはわかっていますが、どんな助けも素晴らしいでしょう.

それが理にかなっていることを願っています。何か案は ?

4

1 に答える 1

1

私は次のようにします:

「フォーム」という新しいモデルを app/models/form.rb に追加します。

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

  attr_accessor :name, :email, :message

  validates :name, presence: true
  validates :email, presence: true, email: true
  validates :message, presence: true

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

  def persisted?
    false
  end

end

pages_controller を変更します。

def new
  @form = Form.new
end

def create
  @form = Form.new(params[:form])
  if @form.valid?
    redirect_to root_path, notice: "Thanks!")
  else
    render "new"
  end
end

フォームの html コードを app/views/pages/home.html.erb に追加します。

<%= form_for @form do |f| %>
  <div class="field">
    <%= f.label :name %>
    <%= f.text_field :name %>
 </div>

 <div class="field">
   <%= f.label :email %>
   <%= f.email_field :email %>
 </div>

 <div class="field">
   <%= f.label :message %>
   <%= f.text_area :message %>
 </div>

 <div class="actions">
   <%= f.submit "Submit" %>
 </div>

以上で、お問い合わせフォームにビルドができました。

このコードは、github の私の宝石の 1 つから収集されます: https://github.com/mattherick/contact_form

テストのために、この gem を gemfile に追加し、github readme に記載されているファイル ジェネレーターを実行できます。

于 2013-04-25T18:17:11.740 に答える