1

嗨,有没有模型的简单 rails 站点,它仅用于提供静态页面。

该站点有一个 Pages 控制器,但这仅提供一个由部分组成的主页。

像这样在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>

这一切都很好。 开发网站在这里

现在我的问题/问题是:我想添加一个 Rails 类型的 ContactUS 页面。

遵循各种教程:

简单联系我们

Rails 3 联系我们

它们都指向有一个消息模型、ActionMailer 和联系控制器,如果你想有一个单独的联系控制器,它们就可以工作。

我一直试图弄清楚如何构建一个contactUs表单,但将其保留在页面控制器中以允许自动滚动工作,因为使用联系人控制器似乎会更改所有URL路由。我知道这可能不是 Rails 方式,但任何帮助都会很棒。

希望这是有道理的。有任何想法吗 ?

4

1 回答 1

1

我会做以下事情:

添加一个名为“Form”的新模型,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 上的一个 gem 中收集的: https ://github.com/mattherick/contact_form

为了进行测试,您可以将此 gem 添加到您的 gemfile 并运行文件生成器,如 github 自述文件中所述。

于 2013-04-25T18:17:11.740 回答