rails动态地将字段添加到嵌套表单

时间:2014-04-20 16:08:44

标签: ruby-on-rails nested-forms

我已经关注了Ryans railscast#196(修订版),以便动态添加和删除嵌套表单中的字段。它似乎工作得很好,但我有两个问题。

  1. 我在嵌套表单(子区域)中有两个使用JQuery日期选择器的字段,因此在显示初始记录的部分中有一个类。最初只用一个孩子创建表单。在这第一个子行上,datepicker工作得很好。但是,添加新行时,带有datepicker的2个字段不再起作用。我相信这个问题是因为当新记录被创建时它不会将类分配给它们,因此JS将无法工作:(不知道如何尝试解决这个问题,如果它是这样的话如果这是不可能的,那么我是否需要一个按钮来添加一条基本上会执行此操作并刷新表单的新记录?我希望有一种方法可以动态地执行此操作,因为它看起来更平滑。

  2. 当我去编辑上述记录时,相同的2个字段没有显示实际日期。日期很好,我可以看到他们保存在数据库中。我有另一个表单,其中包含一个带有datepicker的日期字段,但该字段位于标题处,并且在编辑字段时显示一个值。显然,我必须设置日期字段值的代码不起作用。再次,会感激一些帮助。下面的代码是这两个字段的部分视图。

    <% fromdate_display = :fromdate %>
    <%= f.text_field fromdate_display,  placeholder: "mm/dd/yyyy", required: true, id: "price_fromdate", value: :fromdate.try(:strftime, "%m/%d/%Y") %>
    <%= f.hidden_field :fromdate, id: "price_fromdatealt" %>
    
    
    <% todate_display = :todate %>
    <%= f.text_field todate_display,  placeholder: "mm/dd/yyyy", required: true, id: "price_todate", value: :todate.try(:strftime, "%m/%d/%Y") %>
    <%= f.hidden_field :todate, id: "price_todatealt" %>
    
  3. 我尝试更改值:如下所示,但会引发错误:

    value: @plan.plan_prices.fromdate.try(:strftime, "%m/%d/%Y")
    

    抛出错误消息:

    undefined method `fromdate' for #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_PlanPrice:0x36eb428>
    

1 个答案:

答案 0 :(得分:0)

我认为datepicker输入不起作用,因为在加载datepicker插件后动态添加。在添加新输入后尝试调用js插件,可能在添加输入的链接的单击事件中。或者尝试使用这个gem https://github.com/nathanvda/cocoon。顺便问一下,你使用什么插件进行日期采摘?