首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ruby_on_rails rails 4参数丢失或值为空

ruby_on_rails rails 4参数丢失或值为空
EN

Stack Overflow用户
提问于 2014-08-12 01:28:22
回答 1查看 76关注 0票数 0

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

代码语言:javascript
复制
ActionController::ParameterMissing - param is missing or the value is empty: user_evaluation_result:

在演练控制器中,在某些条件下,我试图在user_evaluation_results中插入一行。操练控制器的代码行如下。我有种感觉我错过了一些显而易见的东西

代码语言:javascript
复制
   ....
   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

user_evaluation_results的值目前是硬编码的,但当我让它正常工作时,这个值就会改变。

user_evaluation_result模型

代码语言:javascript
复制
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

user_evaluation_result表

代码语言:javascript
复制
 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

欢迎任何帮助,当然也可以张贴更多细节,谢谢皮埃尔。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-12 01:34:20

您的UserEvaluationResult在这里调用:@user_evaluation_result = userEvaluationResult.new(user_evaluation_result_params)是小写的,必须是大写字母,因此Rails知道您指的是User Evaluation Result class。您将得到该错误,因为您定义的params需要一个UserEvaluationResult来对其进行操作,但您并没有提供该错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25254845

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档