如何使用ROR解决ParameterMissing错误

时间:2015-01-20 05:40:48

标签: ruby ruby-on-rails-4

请帮我解决以下错误。

错误:

ActionController::ParameterMissing in CustmersController#create
param is missing or the value is empty: users

当我提交数据时,此错误即将发生。

我的代码如下

视图/ custmers / new.html.erb

<h1>Enter your data here</h1>
<center>
  <%= form_for @users,:url => {:action => 'create'} do |f| %>
      <% if @users.errors.any? %>
          <div id="error_explanation">
            <h2><%= pluralize(@users.errors.count, "error") %> prohibited this post from being saved:</h2>

            <ul>
              <% @users.errors.full_messages.each do |message| %>
                  <li><%= message %></li>
              <% end %>
            </ul>
          </div>
      <% end %>
  <p>
    <label for="name">Name:</label>
    <%= f.text_field :name,placeholder:"Enter your name",:class => "input-field" %>
  </p>
      <p>
        <label for="email">Email:</label>
        <%= f.email_field :email,placeholder:"Enter your email",:class => "input-field" %>
      </p>
      <p>
        <label for="phone">Phone no:</label>
        <%= f.telephone_field :phoneno,placeholder:"Enter your phone number",:class => "input-field" %>
      </p>
      <p>
        <%= f.submit "Submit" %>
      </p>
  <% end %>
  <%= link_to "BACK",custmers_index_path %>
</center>

控制器/ custmers_controller.rb

class CustmersController < ApplicationController
  def index

  end
  def new
   @users=Custmer.new
  end
  def show

  end
  def create
    @users=Custmer.new(user_params)
    if @users.save
      flash[:notice]="You have signed up successpully"
      flash[:color]="valid"
      redirect_to :action => 'index'
    else
      flash[:alert]="You have not signed up successfully"
      flash[:color]="invalid"
      render :new
    end
  end
  private
  def user_params
    params.require(:users).permit(:name,:email,:phoneno)
  end
end

模型/ custmer.rb

class Custmer < ActiveRecord::Base
  EMAIL_REGEX = /\A[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\z/i
  validates :name,presence:true,length: { minimum: 5 }
  validates :email, :presence => true, :uniqueness => true, :format => EMAIL_REGEX
  validates :phoneno, presence: true,length: {minimum: 10}

end

我使用的是rails版本4.2.0和ruby版本1.9.3。请帮我解决此错误。

1 个答案:

答案 0 :(得分:1)

如果查看伴随错误的堆栈跟踪,您可以确切地知道问题所在 - 查找堆栈跟踪中引用代码的第一行(而不是库代码)。

但公平的猜测是控制器中的require(:users)行。看起来您要么从另一个控制器复制/粘贴此代码,要么在将其作为脚手架的一部分生成后更改控制器的名称。

应该是requires(:custmer),因为这是您提交的内容的类别。

作为一种通用方法,您应该遵循标准的Rails实践来命名事物。如果您真的想要使用拼写错误的Custmer类,请使用它,但在控制器和视图中使用@custmr来引用实例,而不是@users