2016-12-30 71 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