我有一个'商业'模式,其中包含'小时'。每小时记录都有一个start_time和一个end_time, 并且对于特定企业,每周的每一天都有一个小时记录。
我有一个表单,我只更新业务时间 - 没有其他关于业务的内容。在这种情况下,让Hours控制器进行更新是有意义的。但我无法弄清楚如何正确设置表单。
这是我到目前为止所拥有的,但每个小时作为参数发送,我需要知道它是start_time还是end_time以及它与之相关的那一天。在select_tag中,hour.day包含一个0-6的整数,表示星期几(星期日到星期六)。
=form_tag({:controller => 'hours', :action => "update_multiple"}, :remote => :true) do |f|
-business.hours.each do |hour|
=fields_for hour do |hour_fields|
=select_tag 'hour[days_nums][#{hour.day}]', options_for_select(possible_hours, :start_time)
class Business < ActiveRecord::Base
has_many :hours, :as => :hourable
accepts_nested_attributes_for :hours
end
class Hour < ActiveRecord::Base
belongs_to :hourable, :polymorphic => true
end
create_table "hours", :force => true do |t|
t.integer "hourable_id"
t.datetime "created_at"
t.datetime "updated_at"
t.string "hourable_type"
t.integer "day"
t.time "start_time"
t.time "stop_time"
end
我该如何设置? 谢谢!
答案 0 :(得分:0)
我根本不认识haml,但我会尝试
您应该通过BuisnessController
使用它。以下是new
和edit
操作的表单:
=form_for @buisness do |f|
=f.fields_for :hours do |hour|
=hour.select :day, (0..6)
=hour.select :start_time, [6,7,8] # some start times
=hour.select :stop_time, [9,10,11] # some stop times
答案 1 :(得分:0)
fl00r,你肯定让我接受了这个解决方案,你让我意识到我应该使用form_for @business,但是我只需要改变控制器和动作:
-form_for @business, :url => {:controller => 'hours', :action => "update_multiple"}, :remote => :true do |f|
=f.fields_for :hours do |hour|
=hour.select :day, (0..6)
=hour.select :start_time, [6,7,8] # some start times
=hour.select :stop_time, [9,10,11] # some stop times