Rails:没有路由匹配,创建联系我们表单

时间:2011-07-17 02:17:56

标签: ruby-on-rails routes actionmailer contact-form

我正在联系我们表格,没有任何型号。当人们点击联系我们时,我只是想在主页上弹出一个弹出窗口。

在部分我们加载_contact.html.haml,这就是我们所拥有的

<div class="contact-us-form">

  <h>Contact Us</h>
  <%  form_tag(:controller => "application", :action => "deliver_contact_form",  :method=>'post') do %>
    <p>
      <%= label_tag(:contact_email, "Your Email") %>
    </p>
    <p>
      <%= text_field_tag(:contact_email) %>
    </p>
    <p>
      <%= label_tag(:contact_detail, "Details") %>
    </p>
    <p>
      <%= text_area_tag(:contact_detail,:"", :size=> "44x6") %>
    </p>
    <p>
      <%= submit_tag("Submit") %>
    </p>
  <% end %>  
  <div id="contact_cancel"><%= link_to "Cancel", "javascript:void()"%></div>
</div>

我们在application_controller.rb

中定义了action_contact_form
  def deliver_contact_form
    ContactMailer.welcome_email(params).deliver     
    respond_to do |format|        
      format.html { redirect_to comments_path }
    end
  end

当我只运行主页(localhost:3000)时,我得到了

No route matches {:controller=>"application", :action=>"deliver_contact_form", :method=>"post", :locale=>:en}

我想知道我需要做什么?

谢谢, 米纳

1 个答案:

答案 0 :(得分:0)

您需要在routes.rb

中定义路线

我还建议创建一个新的控制器,即使是这样的小动作,无论如何:

match '/deliver_contact_form' => 'application#deliver_contact_form', :via => :post

<% form_tag(deliver_contact_form_path, :method => 'post') do