【问题标题】:How to solve ParameterMissing error using ROR如何使用 ROR 解决 ParameterMissing 错误
【发布时间】:2015-01-20 05:40:47
【问题描述】:

请帮我解决以下错误。

错误:

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

当我提交数据时,这个错误来了。

我的代码如下

views/customers/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>

控制器/客户控制器.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

model/customer.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 version-4.2.0 和 ruby​​ version-1.9.3。请帮我解决这个错误。

【问题讨论】:

  • 是的,它正在工作@Arup。谢谢伙计。但我可以说你以前的方法也有效。在使用之前我已经成功了很多次。

标签: ruby ruby-on-rails-4


【解决方案1】:

如果您查看伴随错误的堆栈跟踪,您可以确定问题出在哪里——在堆栈跟踪中查找引用您的代码(而不是库代码)的第一行。

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

它应该是requires(:custmer),因为这是你提交的东西的类。

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

【讨论】:

  • 应该是params.require(:user).permit(:name,:email,:phoneno)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 2012-01-28
  • 1970-01-01
相关资源
最近更新 更多