Ruby on rails ruby_on_rails 4参数缺失或值为空

Ruby on rails ruby_on_rails 4参数缺失或值为空,ruby-on-rails,Ruby On Rails,正在日志中获取以下错误消息 ActionController::ParameterMissing - param is missing or the value is empty: user_evaluation_result: 在特定条件下,我试图在用户评估结果中插入一行。下面是演练控制器的代码行。我觉得我错过了一些显而易见的东西 .... user_evaluation_result_req = Rails.cache.read("user_evaluation_result_

正在日志中获取以下错误消息

ActionController::ParameterMissing - param is missing or the value is empty: user_evaluation_result:
在特定条件下,我试图在用户评估结果中插入一行。下面是演练控制器的代码行。我觉得我错过了一些显而易见的东西

   ....
   user_evaluation_result_req = Rails.cache.read("user_evaluation_result_req")
      if user_evaluation_result_req
        id = Rails.cache.read("evaluation_assumption_id")
        @user_evaluation_results = UserEvaluationResult.get_user_evaluation_results(id)
        @result_list.each do |result|          
          if @user_evaluation_results.present?
            puts "user evaluation result present "
          else
            @user_evaluation_result = UserEvaluationResult.new
            @user_evaluation_result.evaluation_assumption_id = id
            @user_evaluation_result.company_listing_id = 124
            @user_evaluation_result.target_share_price_dollars = 7333
            @user_evaluation_result = userEvaluationResult.new(user_evaluation_result_params)
          end
        end   
   ....
   # further down in Drills Controller
    def user_evaluation_result_params
      params.require(:user_evaluation_result).
        permit(:evaluation_assumption_id,
               :company_listing_id,
               :target_share_price_dollars )
   end
用户评估结果的值目前是硬编码的,但当我让它工作时会发生变化

用户评价结果模型

class UserEvaluationResult < ActiveRecord::Base
  include ActiveModel::ForbiddenAttributesProtection
  before_validation :clean_data

  belongs_to :company_listing
  belongs_to :evaluation_assumption

  validates :evaluation_assumption_id, :company_listing_id, 
      :target_share_price_dollars, presence: true
  validates :target_share_price_dollars, :numericality => { :only_integer => true, 
      :greater_than_or_equal_to => 0}
  validates :company_listing_id, uniqueness: {scope: [:evaluation_assumption_id]}

  def self.get_user_evaluation_results(id)
    where("evaluation_assumption_id = ?", id)
  end

  def target_share_price_dollars
    target_share_price.to_d/1000 if target_share_price
  end
  def target_share_price_dollars=(dollars)
    self.target_share_price = dollars.to_d*1000 if dollars.present?
  end

  private

  def clean_data
    # trim whitespace from beginning and end of string attributes
    attribute_names.each do |name|
      if send(name).respond_to?(:strip)
      send("#{name}=", send(name).strip)
      end
    end
  end
end
 create_table "user_evaluation_results", force: true do |t|
    t.integer  "company_listing_id"
    t.integer  "target_share_price"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.integer  "evaluation_assumption_id"
  end
欢迎任何帮助,当然可以发布更多详细信息
感谢Pierre

您在此处调用的UserEvaluationResult:@user\u evaluation\u result=UserEvaluationResult.newuser\u evaluation\u result\u参数为小写,必须为大写,以便Rails知道您引用的是用户评估结果类。您之所以会出现此错误,是因为您定义的参数需要一个UserEvaluationResult来执行操作,而您却没有提供一个。尽管如此,您的代码没有意义。您创建一个新实例,然后分别向其中添加变量,但在最后一行再次添加所有这些变量。定义user_evaluation_result_参数的意义在于,您可以一次性添加所有参数,而不必单独定义每个参数。您可以这样更高效地编写代码:@user_evaluation_result=UserEvaluationResult.newuser_evaluation_result_paramsHi kittyminky2-谢谢您的回答。你能澄清一下怎么修理吗?我为什么要资本化?提前感谢。@user1854802如果@user\u evaluation\u results.present出现,请替换您的全部内容?其他等等。。。方法在DrillsController中使用if@user\u evaluation\u results.present?显示用户评估结果else@user\u evaluation\u result=UserEvaluationResult.newuser\u evaluation\u result\u params end谢谢-通常还有一个问题,这些值将进入参数。要求:user\u evaluation。。。将从视图中显示。但是,在这种情况下,它们是派生值。例如,我如何分配公司清单id的价值?