我有一个表单,它接受一个名为calories:
的用户属性的整数,我希望将输入整数添加到当前值,而不是替换它。所以我的问题基本上是:如何获取表单输入值并使用它来增加卡路里数?
好的,这是我的users / show视图中的表单:
<div class="row">
<div class="col-md-8">
<%= form_for @user do |f| %>
<div class="form-group">
<%= f.label "Add calories" %>
<%= f.number_field :calories, class: 'form-control'%>
</div>
<div class="form-group">
<%= f.submit "Add", class: 'btn btn-success' %>
</div>
<% end %>
</div>
</div>
和我在users_controller中的更新操作:
def update
@user = current_user
@user.assign_attributes(user_params)
end
private
def user_params
params.require(:user).permit(:calories)
end
答案 0 :(得分:0)
所以假设你有@user对象和params [:calories]值(你的名字可能不同)。在您的更新操作中,您将执行此操作:
previous_calories = @user.calories
final_calories = previous_calories + params[:calories]
@user.update_attributes(calories: final_calories)
这就是如何在高层次上做到这一点。我实际上会将这个提取到用户的模型方法中,如下所示:
def update_calories(calories)
previous_calories = self.calories
total_calories = previous_calories + calories
self.update_attribute(calories: total_calories)
end
答案 1 :(得分:0)