我在Rails中的noob。我使用rails 4.2.4。我的联系表格有问题。我在此代码的第3行(contact_form.html.erb)上有一个错误:First argument in form cannot contain nil or be empty
:
<div class="all-banners-width">
<figure class="green-background">
<%= form_for @contact_form do |f| %>
<p>
<%= f.label :name %><br>
<%= f.text_field :name %>
</p>
<p>
<%= f.label :phone %><br>
<%= f.text_field :phone %>
</p>
<p>
<%= f.label :email %><br>
<%= f.text_field :email %>
</p>
<p>
<%= f.label :text %><br>
<%= f.text_field :text %>
</p>
<p>
<%= f.submit %>
</p>
<% end %>
</figure>
</div>
我的contact_form_controller.rb是:
class ContactFormController < ApplicationController
def contact_form
@contact_form = ContactForm.new
end
def create
@contact_form = ContactForm.new(contact_form_params)
@contact_form.save
redirect_to root_path, notice: "Saved"
end
private
def contact_form_params
params.require(:contact_form).permit(:name, :phone, :email, :text)
end
end
我的数据库迁移文件是:
class CreateContactForms < ActiveRecord::Migration
def change
create_table :contact_forms do |t|
t.string :name
t.string :phone
t.string :email
t.string :text
t.timestamps null: false
end
end
end
如果我将第3行从contact_form.html.erb更改为下一行:
<%= form_for :contact_form do |f| %>
然后我没有错误,但无论如何联系表格不起作用,我没有看到任何错误。
有人能帮助我吗?我不知道,问题在哪里。
答案 0 :(得分:1)
你错过了控制器中的动作new
:
def new
@contact_form = ContactForm.new
end
您的模板使用@contact_form = nil
呈现。