StaticPages #home中的ArgumentError

时间:2015-09-29 10:03:07

标签: ruby-on-rails ruby ruby-on-rails-4

我在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| %>

然后我没有错误,但无论如何联系表格不起作用,我没有看到任何错误。

有人能帮助我吗?我不知道,问题在哪里。

1 个答案:

答案 0 :(得分:1)

你错过了控制器中的动作new

def new
  @contact_form = ContactForm.new
end

您的模板使用@contact_form = nil呈现。