【问题标题】:Save rails time_select as string将 rails time_select 保存为字符串
【发布时间】:2016-12-30 09:11:56
【问题描述】:

我的数据库中有一个字符串字段

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。如何解决这个问题?非常感谢任何帮助

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 time


    【解决方案1】:

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

    尝试从m_holiday_params 中过滤掉与open_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 字符串,就像您已经完成的那样。

    【讨论】:

    • 感谢您的回复。我不明白你所说的“从m_holiday_params 过滤掉与open_schedule 输入相关的所有内容”是什么意思。能详细点吗??
    • 我的 m_holiday 参数是 params.require(:m_holiday).permit(:open_schedule,...)
    • 删除:open_schedule 应该可以。
    • 这就像一个魅力......但这不会在更新记录时产生问题吗??
    • 它可以正常工作,您只需要在创建/更新MHoliday 记录的每个操作中手动设置open_schedule 属性,就像您在原始问题中所做的那样。
    猜你喜欢
    • 1970-01-01
    • 2012-01-26
    • 2017-03-23
    • 2021-11-23
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2017-06-22
    • 1970-01-01
    相关资源
    最近更新 更多