如何在rails中使用提交按钮重定向?

时间:2016-10-10 22:16:54

标签: ruby-on-rails ruby

我有这个HTML:

<% provide(:contact, "active") %>
<% provide(:title, "Contacto | Recotiendame") %>
<div align="center">
  <h1 id_"page_title">Contactanos!</h1>
  <div class="skinny_wrapper wrapper_padding"
      <%= form_for contact_path, url: @done do |f| %>
        <%= f.label :Nombre %><br>
        <%= f.text_field :Nombre, required: true %>

        <br>

        <%= f.label :Email %><br>
        <%= f.email_field :Email, required: true %>

        <br>

        <%= f.label :Mensaje %><br>
        <%= f.text_area :Mensaje, as: :text %>

        <div class= "hidden">
            <%= f.label :nickname %><br>
            <%= f.text_field :nickname, hint: 'dejalo en blanco' %>
        </div>
        <br>
        <%= f.submit 'Enviar Mensaje', class: "button" %>
    </div>
  <% end %>
</div>

使用此控制器:

class ContactController < ApplicationController
  def new
    @contact = Contact.new
  end

  def create
    @contact = Contact.new(params[:contact])
    @contact.request = request
    if @contact.deliver
      flash.now[:notice] = 'Gracias por su mensaje. Lo contactaremos luego!'
    else
      flash.now[:error] = 'No se pudo enviar el mensaje.'
      render :new
    end
  end
end

问题是提交按钮什么都不做。如何让它重定向我创建?我已经看到很多这个问题的答案,但没有一个对我有用。

编辑1

当我做@done时,只是尝试一下。

1 个答案:

答案 0 :(得分:0)

如果我不得不猜测,我认为你的form_for字段错了。通常情况下,您有form_for @contact之类的内容,而且只是工作,但如果您想覆盖默认网址,则需要传递不同的网址,例如

form_for @contact, url: contacts_path`

(注意复数很重要)。

我不知道@done是什么意思......但它可能不应该存在......并且将contact_path放在两个不正确的事情上:

1)你不应该在那个时候有一个网址,而是一个对象(在这种情况下,对象是联系人)

2)contact_path用于显示已保存的单个联系人,为了创建新联系人,您需要contacts_path(我的想法是您要发布新的联系人到这组联系人。)