【发布时间】:2017-12-21 20:19:25
【问题描述】:
我正在尝试将两个表单输入组合到一个数据库条目参数中。在我的表单中,我有几个小时(6-22)和分钟(0-55)的下拉列表,在我的数据库中,我有一个“开始”列,我希望将一个整数计算为 start_hour * 60 + start_mins。
我的表格是这样的:
<div class="form-group">
<%= f.label :start_hour %>
<%= f.select :start_hour, 6 .. 22, class: 'form-control' %>
<%= f.label :start_mins %>
<%= f.select :start_mins, 00 .. 55, class: 'form-control' %>
</div>
在我的模型中,我添加了 before_validation:
before_validation :generate_starttime
def generate_starttime
self.start= '#{:start_hour}' * 60 + '#{start_mins}'
end
我的控制器有问题 - 我不知道如何将 start 传递给数据库。我将参数传递为:
def create
@klass = Klass.new(contact_params)
if @klass.save
flash[:success] = "Class added"
else
flash[:error] = @klass.errors.full_messages.join(", ")
end
redirect_to new_klass_path
end
我尝试了 self.start 和 @start 和 :start 并没有真正起作用 - 但我承认我一直处于黑暗中。现在我收到错误:
#Did 的未定义方法 `start' 你的意思是?状态
对于“self.start”版本和
未定义的方法 `start_mins' 用于 # 你有没有 意思是?开始start_was
对于 ":start" 和 "@start" 版本 :D 我觉得我在这里缺少一些非常基础的东西。你能指出我正确的方向吗?
如果这很重要,那就是我的数据库架构:
create_table "klasses", force: :cascade do |t|
t.string "name"
t.string "teacher"
t.string "day"
t.integer "start"
t.integer "duration"
end
【问题讨论】:
-
@VaneTrajkov 谢谢。我错过了那一吨。我正在尝试使用那个,我摆脱了错误,但我的 :start attr 在数据库中仍然设置为 0。
标签: ruby-on-rails ruby database forms