Ruby on Rails接收内部服务器错误:param的预期数组(获取字符串)

时间:2014-04-24 14:45:57

标签: ruby-on-rails arrays ruby-on-rails-3 ruby-on-rails-3.2

我在表单中有一个循环,我正在尝试创建具有相同名称的多个数据,但我的语法错误。

我对同一个应用程序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

1 个答案:

答案 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