我注意到我的一个模型字段在初始设置后不会通过我的应用程序在浏览器中更新。当我去研究这个时,我发现该字段只是通过自定义验证器声明:
validate :amount_validator
def amount_validator
if self.amount == nil
errors.add(:amount, "Please fill in the amount.")
end
end
我认为问题在于缺少这个问题:
validates :amount, presence: true
我添加了这个,但我仍然无法通过浏览器更新字段。当我保存该值并刷新页面时,它已恢复为原始值。我读了另一个SO问题,表明我应该尝试通过控制台更新此字段,看看是否有任何错误。我做到了这一点,没有任何错误。回到浏览器并且值已经改变但我仍然无法通过浏览器更新它。谢谢你的帮助。
答案 0 :(得分:3)
根据您使用的导轨版本,错误可能在accessible attributes(Rails 3)或strong paramenters(Rails 4)附近。
在Rails 3上,确保您在模型:
中拥有此功能attr_accessible :amount
在Rails 4上,确保您在控制器中传递给update_attributes
的哈希中的属性:
your_model.update_attributes(params.require(:your_model_name).permit([:amount]))