在日志中获取以下错误消息
ActionController::ParameterMissing - param is missing or the value is empty: user_evaluation_result:在演练控制器中,在某些条件下,我试图在user_evaluation_results中插入一行。操练控制器的代码行如下。我有种感觉我错过了一些显而易见的东西
....
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 )
enduser_evaluation_results的值目前是硬编码的,但当我让它正常工作时,这个值就会改变。
user_evaluation_result模型
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
enduser_evaluation_result表
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欢迎任何帮助,当然也可以张贴更多细节,谢谢皮埃尔。
发布于 2014-08-12 01:34:20
您的UserEvaluationResult在这里调用:@user_evaluation_result = userEvaluationResult.new(user_evaluation_result_params)是小写的,必须是大写字母,因此Rails知道您指的是User Evaluation Result class。您将得到该错误,因为您定义的params需要一个UserEvaluationResult来对其进行操作,但您并没有提供该错误。
https://stackoverflow.com/questions/25254845
复制相似问题