【发布时间】:2011-12-05 22:06:34
【问题描述】:
我遇到了一个问题,当用户填写我的评估表时,点击“创建”,然后点击浏览器的后退按钮,进行一些编辑,然后再次点击“创建”,它正在创建重复的评估。
防止此类事情发生的最佳方法是什么。
在创建时每个survey_criterion 应该只存在一个evaluation。我不希望用户在点击后退按钮、用新内容填写表单并再次单击“创建”后丢失他们输入的任何数据。
更新
routes.rb
resources :survey_criteria do
resources :groups do
resources :evaluations
end
end
survey_criterion.rb
has_many :evaluations
评估.rb
belongs_to :survey_criterion
belongs_to :group
有更复杂的关联,但我正在寻找的答案更多,“当用户按下'返回'按钮,修改表单,然后再次点击创建时如何处理”。
我希望它更新我认为在这种情况下自动创建的那个,而不是向用户抛出错误。我知道我可以添加一个会出错的验证,但我希望它对我认为的用户不可见。
想法?
【问题讨论】:
-
您能否更具体地说明两个模型之间的关系性质?关于你的
create行动? -
明天上班时,我会尝试添加更多信息。谢谢。
-
获取有关您的表单的信息也可能很有用。您是创建关联的
evaluation和新的survey_criterium(以嵌套形式),还是以不同的形式创建两者?如果我很清楚你想要达到的目标,nested form 应该可以解决问题,因为点击后退按钮会让你回到新的survey_criterium表单,确保如果你再次点击提交,你会尝试创建一个新的survey_criterium而不是一个新的evaluation。
标签: ruby-on-rails ruby-on-rails-3 browser duplicates back-button