【问题标题】:Ruby on Rails form to update model adding/substracting the input value to the current valueRuby on Rails 表单更新模型将输入值添加/减去当前值
【发布时间】:2020-04-27 14:36:44
【问题描述】:

我想添加一个表单来更新模型,将输入值添加到当前值,但只打印输入值。 假设我们有 :cars = 50 和用户输入 30。我想打印 30 并且提交后的汽车值应该是 80。

= form_for @shop do |f|
  - if @shop.errors.any?
    #error_explanation
      %h2= "#{pluralize(@shop.errors.count, "error")} prohibited this shop from being saved:"
      %ul
        - @shop.errors.full_messages.each do |message|
          %li= message

  .field
    = f.label :cars
    = f.text_field :cars
  .actions
    = f.submit 'Add cars'

我知道这个问题不是很具体,但我找不到开始的地方。我试着环顾四周,但似乎找不到合适的搜索关键字组合。

【问题讨论】:

    标签: ruby-on-rails forms


    【解决方案1】:

    在您的模型上创建一个虚拟属性。假设cars_increment

    attr_reader :cars_increment
    
    def cars_increment=(value)
      @cars_increment = value
      self.cars += value
    end
    

    现在设置该值将增加cars 的值,但您仍显示cars_increment,因此用户将看到他们输入的内容。

    请确保在视图中直接使用cars_increment 而不是cars

    请注意,如果您的代码在每个请求中多次设置 cars_increment 的值,或者当您网站上的流量增加并且多个请求同时尝试更改此值时,这将遇到问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-18
      • 1970-01-01
      相关资源
      最近更新 更多