Contact form in ruby, sinatra, and haml

haml, pony, ruby, sinatra

Solution

I figured it out for any of you wondering:

haml:

%form{ :action => "", :method => "post"}
  %fieldset
    %ol
      %li
        %label{:for => "name"} Name:
        %input{:type => "text", :name => "name", :class => "text"}
      %li
        %label{:for => "mail"} email:
        %input{:type => "text", :name => "mail", :class => "text"}
      %li
        %label{:for => "body"} Message:
        %textarea{:name => "body"}
    %input{:type => "submit", :value => "Send", :class => "button"}

And the app.rb:

post '/contact' do
        name = params[:name]
        mail = params[:mail]
        body = params[:body]

        Pony.mail(:to => '*emailaddress*', :from => "#{mail}", :subject => "art inquiry from #{name}", :body => "#{body}")

        haml :contact
    end

Problem

I'm new to all three, and I'm trying to write a simple contact form for a website. The code I have come up with is below, but I know there are some fundamental problems with it (due to my inexperience with sinatra). Any help at getting this working would be appreciated, I can't seem to figure out/find the documentation for this sort of thing. haml code from the contact page: ``` %form{:name => "email", :id => "email", :action => "/contact", :method => "post", :enctype => "text/plain"} %fieldset %ol %li %label{:for => "message[name]"} Name: %input{:type => "text", :name => "message[name]", :class => "text"} %li %label{:for => "message[mail]"} Mail: %input{:type => "text", :name => "message[mail]", :class => "text"} %li %label{:for => "message[body]"} Message: %textarea{:name => "message[body]"} %input{:type => "submit", :value => "Send", :class => "button"} ``` And here is my code in sinatra's app.rb: ``` require 'rubygems' require 'sinatra' require 'haml' require 'pony' get '/' do haml :index end get '/contact' do haml :contact end post '/contact' do name = #{params[:name]} mail = #{params[:mail]} body = #{params[:body]} Pony.mail(:to => '*emailaddress*', :from => mail, :subject => 'art inquiry from' + name, :body => body) end ```

Original source