我有一个页面/联系人的表单,并希望将数据发送到另一个名为ContactForm而不是Pages模型的模型,所以我想这是在基本约定之外..它看起来像这样:
<%= form_for @contact_form, url: pages_contact_path, :method => :post do |f| %>
...
...
<% end %>
class PagesController < ApplicationController
def contact
@contact_form = ContactForm.new(contact_form_params)
end
end
我创建了这条路线
post 'pages/contact' => 'pages#contact'
这一切似乎都运行正常,但没有记录数据。在本地服务器中,我可以看到正在处理POST但没有执行任何SQL事务。为什么??
Started POST "/pages/contact" for ::1 at 2016-06-22 15:58:47 -0300
Processing by PagesController#contact as HTML
Processing by PagesController#contact as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"WIb3jXmkxP0mxRPSPU0Yj050fFwCQOlm9FatCFiGuSrEaoRNXNtmn/w0ZOMtsZsRUwjq4NQweV+d56T5nFxL5Q==", "contact_form"=>{"name"=>"Diego", "phone"=>"", "email"=>"", "subject"=>"", "message"=>"Hoal"}, "commit"=>"Create Contact form"}
参数:{“utf8”=&gt;“✓”,“authenticity_token”=&gt;“WIb3jXmkxP0mxRPSPU0Yj050fFwCQOlm9FatCFiGuSrEaoRNXNtmn / w0ZOMtsZsRUwjq4NQweV + d56T5nFxL5Q ==”,“contact_form”=&gt; {“name”=&gt;“Diego”,“ phone“=&gt;”“,”email“=&gt;”“,”subject“=&gt;”“,”message“=&gt;”Hoal“},”commit“=&gt;”创建联系表单“} 在布局/应用程序(3.0ms)中呈现页面/ contact.html.erb
非常感谢!
答案 0 :(得分:2)
在本地服务器中我可以看到正在处理POST但没有这样做 任何SQL Transaction ..为什么?
只要没有请求任何交易,就不会执行SQL
。您的contact_form
操作所做的是为变量分配参数,但不要求验证此变量并将其保存到数据库中。所以它只是传递给视图......
您感兴趣的是:
@contact_form = ContactForm.new(contact_form_params)
if @contact_form.save
# render success
else
# render errors
end