2016-12-30 70 views
1

我在DATABSE保存轨time_select作为字符串

class CreateMHolidays < ActiveRecord::Migration 
    def change 
    create_table :m_holidays do |t| 
     t.string :open_schedule, :limit => 50 
    end 
    end 
end 

有一个字符串字段我使用time_select获得价值open_schedule场。

<%= f.time_select :open_schedule, {minute_step: 01, include_blank: true,:default =>{:hour => '00', :minute => '00'},:ignore_date => true}, {:class => 'form-control'} %> 

在我的控制器中我尝试

@m_holidays = MHoliday.new(m_holiday_params) 

@open_schedule_hrs = (params[:m_holidays]['open_schedule(4i)']).to_s 
@open_schedule_mns = (params[:m_holidays]['open_schedule(5i)']).to_s 
@m_holidays.open_schedule = @open_schedule_hrs + ':' + @open_schedule_mns 

但是当我尝试保存记录我对分配 越来越

的ActiveRecord :: MultiparameterAssignmentErrors(1个错误多参数属性[赋值错误[3,3]到 open_schedule(缺少参数 - open_schedule(1))])

这是我第一次使用time_select,我必须用字符串字段而不是:time。如何去做这件事?非常感谢的任何帮助

回答

1

由于@m_holidays = MHoliday.new(m_holiday_params)行上的质量参数分配,您将得到ActiveRecord::MultiparameterAssignmentErrors。这可能是由于m_holiday_params包含您的MHoliday模型不知道如何处理的参数。

尝试过滤掉与m_holiday_paramsopen_schedule输入相关的所有内容。如果你有一个m_holiday_params方法是这样的:

def m_holiday_params 
    params.require(:m_holiday).permit('open_schedule(4i)', 'open_schedule(5i)', ...) 
end 

则省略open_schedule参数:

def m_holiday_params 
    params.require(:m_holiday).permit(...) 
end 

然后你可以手动设置open_schedule字符串,因为你已经做了。

+0

感谢您的回复。我没有从“m_holiday_params”中筛选出与'open_schedule'输入相关的所有内容。你能否详细说明一下? –

+0

我的'm_holiday' params是'params.require(:m_holiday).permit(:open_schedule,...)' –

+0

删除':open_schedule'应该这样做。 – cobaltsoda