我在表单中有一个循环,我正在尝试创建具有相同名称的多个数据,但我的语法错误。
我对同一个应用程序HERE有另一个问题,因为数组中的数字我有一个质量分配错误
<%= form_for [@hourable, @hour] do |f| %>
<% (1..7).each do |i| %>
<%= select_tag "hour[#{i}][day]", options_for_select(days_hours) %>
<%= select_tag "hour[#{i}][open_time]", options_for_select([ ... %>
<%= select_tag "hour[#{i}][open_time]", options_for_select([ ... %>
<% end %>
<% end %>
哪来自[#{i}]
。所以我尝试删除它,因为我认为它会给我这个数组:
"hours" =
[{"day"=>"Sunday","open_time"=>"6", "close_time"=>"6"},
{"day"=>"Monday","open_time"=>"6", "close_time"=>"6"},
{"day"=>"Tuesday","open_time"=>"6", "close_time"=>"6"}]
最初我有这个:
"hour"=>{
"1"=>{"day"=>"Sunday","open_time"=>"6","close_time"=>"6"},
"2"=>{"day"=>"Sunday","open_time"=>"6","close_time"=>"6"},
"3"=>{"day"=>"Sunday","open_time"=>"6","close_time"=>"6"}
}
如何找到正确的数组?
谢谢!
编辑:
控制器:
class HoursController < ApplicationController
before_filter :get_hourable
def new
@hour = @hourable.hours.new
end
def create
@hour = @hourable.hours.new(params[:hour])
end
private
def get_hourable
@hourable = params[:hourable].camelize.constantize.find_by_user_id(current_user)
end
def hourable_id
params[(params[:hourable].singularize + "_id").to_sym]
end
end
day_hours in my helper
def days_hours
[
['Sunday', 'Sunday'],
['Monday', 'Monday'],
['Tuesday', 'Tuesday'],
['Wednesday', 'Wednesday'],
['Thursday', 'Thursday'],
['Friday', 'Friday'],
['Saturday', 'Saturday']
]
end
这是我的模特:
class Hour < ActiveRecord::Base
attr_accessible :day, :open_time, :close_time, :days_attributes
include IceCube
belongs_to :hourable, polymorphic: true
belongs_to :professional
serialize :schedule, Hash
serialize :hour, Hash
end
答案 0 :(得分:1)
试试这个:
<%= form_for [@hourable, @hour] do |f| %>
<% 7.times do %>
<%= select_tag "hour[][day]", options_for_select(days_hours) %>
<%= select_tag "hour[][open_time]", options_for_select([ ... %>
<%= select_tag "hour[][close_time]", options_for_select([ ... %>
<% end %>
<% end %>
从hour[]
开始,在params [:hour]内生成一个数组。数组中的每个元素都会在hour[]
之后具有键 - 在这种情况下,:day
,:open_time
和:close_time
。