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

Вы получаете ActiveRecord::MultiparameterAssignmentErrors из-за назначения массовых параметров на линии @m_holidays = MHoliday.new(m_holiday_params). Это может быть связано с m_holiday_params, содержащим параметры, которые ваша модель MHoliday не знает, что делать.

Попробуйте отфильтровать все, что связано с open_schedule, из m_holiday_params. Если у вас есть 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

Спасибо за ответ. Я не понял, что именно подразумевал u, «отфильтровывая все, что связано с входом' open_schedule' из 'm_holiday_params'. не могли бы вы рассказать? –

+0

Ну, мои параметры 'm_holiday' -' params.require (: m_holiday) .permit (: open_schedule, ...) ' –

+0

Удаление': open_schedule' должно это сделать. – cobaltsoda

Смежные вопросы