我在嵌套模型上关注了Ryan Bates
tutorial.我的几个嵌套模型都有与之关联的日期.在我的迁移中,它们实际上是“日期”类型.
我尝试过的一些事情和我遇到的问题
> date_select – 可以处理表单对象前缀,但不能处理嵌套模型属性
> select_year – 不适用于表单对象
>通过使用(Time.now.year – 100)..(Time.now.year)填充年份的常规选择并覆盖attr访问器start_date和end_date以获取select中的值以形成日期并传递背部.仅适用于创建,而不适用于更新
>使用(Time.now.year – 100)..(Time.now.year)将字段的数据类型更改为字符串并使用填充年份的常规选择工作,但是在编辑时,它不会使用当前信息重新填充选择
任何想法或提示都会有所帮助.
编辑:before_save似乎更有前景但由于某种原因,值在保存之前是零,但在log dump.中可见
编辑2:有趣的是,这似乎只是’更新’上的问题,而不是’创建’.
解决方法
这是解决方案:
<% new_or_existing = task.new_record? ? 'new' : 'existing' %> <% prefix = "project[#{new_or_existing}_task_attributes][]" %> <% fields_for prefix,task do |t| -%> <%= t.date_select(:start_date,:index => task.id || nil) %> <% end -%>
以下是其工作原理的解释: