ruby-on-rails - 尝试在 ruby rails 中保存记录时出错
问题描述
我有一个表单,用户可以在其中向程序添加不同的练习。此表单包含两个提交按钮:
- 用于保存程序并将其分配给另一个用户
- 将程序保存为模板,以便以后再次使用
在我扩展第二个提交按钮之后,第一个操作运行良好。有时它可以工作(例如在清除缓存之后),有时不能,它会抛出如下错误:
activerecord.errors.models.exercise.attributes.source_id.taken
我还没有找到 .taken 的确切含义,但我认为 Rails 认为它必须是唯一的?但事实并非如此。
第二次提交:当我尝试将程序另存为模板时出现错误
translation missing: de.activerecord.errors.messages.record_invalid
当我尝试保存模板时:
if params[:Template]
@template = ProgramTemplate.new(template_params(:create))
if @template.save!
flash[:success] = {'title' => I18n.t('alerts.6C.success.title'), 'text' => I18n.t('alerts.6C.success.message')}
render :new
else
在此之后,我检查了@template 的外观,检查一切看起来都很好。当我运行 @template.invalid?(:name) 时,它显示为 true,但 .inspect 显示该名称确实存储为字符串。
我的模板参数:
def template_params(method = :update)
nested_attributes = [:source_id, :series, :repetitions, :break, :sort_order]
nested_attributes += [:id, :_destroy] if method == :update
params.require(:program).permit(:account_id, :description, :account_patient_id, :name, :goal, :frequency, :duration, exercises_attributes: nested_attributes)
end
@template的型号代码:
class ProgramTemplate < ActiveRecord::Base
#belongs_to :patient
#belongs_to :program
belongs_to :account
#belongs_to :account_patient
has_many :exercises, dependent: :destroy
accepts_nested_attributes_for :exercises, allow_destroy: true
#has_many :program_sessions, dependent: :destroy
# accepts_nested_attributes_for :exercises, reject_if: lambda { |e| e[:published].blank? }, allow_destroy: true
validates :name, presence: true
validate :min_no_of_exercises
解决方案
推荐阅读
- javascript - 删除草稿后的 Gmail API、侧边栏和计数器未更新
- django - Django RestFramework - NOT NULL 约束失败
- html - 页面在 Safari 和 Firefox 中呈现不同
- html - 有没有办法让 iframe 全屏显示?
- javascript - Javascript - 正则表达式不包含某些字符
- pandas - 如果它包含字符串(而不是完全匹配),如何检查 Pandas 数据框列的每一行?
- r - 在 dplyr 管道中,以编程方式重命名列(左侧和右侧)
- sql-server - 无效的列名和无法在 WHERE 子句中绑定多部分标识符
- r - 检查一个表的字符串是否都包含在另一个表中
- php - TYPO3 9.5.3 / Extbase:后端和前端的时区错误