对于我的第一个 Rails 项目,我正在尝试使用 SimpleForm gem 创建一个表单。该表单有单选按钮格式的问题,每个答案都有一个与之相关的分数 (1 - 4)。我的目标是让表单将每个问题的分数相加(:vision_problems,:balance_issues,:nausea),并在用户提交表单后将总分保存到单独的列(:total)中。解决这个问题的最佳方法是什么?
目前,我正在使用以下内容在我的 Show 视图中显示总数,但是有一个 :total 列会好得多:
<%= @total = @symptom.nausea + @symptom.balance_issues + @symptom.vision_problems %>
感谢您的任何帮助。
视图中的部分表单:
<%= simple_form_for(@symptom) do |f| %>
<%= f.error_notification %>
<%= f.input :vision_problems, label_html: { class: "buttonhead" }, collection: [ 1 , 2, 3,
4 ], as: :radio_buttons %>
<%= f.input :balance_issues, label_html: { class: "buttonhead" }, collection: [ 1 , 2, 3,
4 ], as: :radio_buttons %>
<%= f.input :nausea, label_html: { class: "label label-info" }, collection: [ 1 , 2, 3,
4 ], as: :radio_buttons %>
<%= f.button :submit, class: "btn btn-primary" %>
<% end %>
症状模型:
class Symptom < ActiveRecord::Base
attr_accessible :description, :vision_problems, :balance_issues, :nausea, :user_id, :total
belongs_to :user
validates :user_id, presence: true
end
Symptom 控制器的创建部分:
def create
@symptom = current_user.Symptoms.new(params[:symptom])
respond_to do |format|
if @symptom.save
format.html { redirect_to @symptom, notice: 'Symptom was successfully created.' }
format.json { render json: @symptom, status: :created, location: @symptom }
else
format.html { render action: "new" }
format.json { render json: @symptom.errors, status: :unprocessable_entity }
end
end
end