我有这个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
时,只是尝试一下。
答案 0 :(得分:0)
如果我不得不猜测,我认为你的form_for字段错了。通常情况下,您有form_for @contact
之类的内容,而且只是工作,但如果您想覆盖默认网址,则需要传递不同的网址,例如
form_for @contact, url: contacts_path`
(注意复数很重要)。
我不知道@done
是什么意思......但它可能不应该存在......并且将contact_path放在两个不正确的事情上:
1)你不应该在那个时候有一个网址,而是一个对象(在这种情况下,对象是联系人)
2)contact_path
用于显示已保存的单个联系人,为了创建新联系人,您需要contacts_path
(我的想法是您要发布新的联系人到这组联系人。)