我正在做一个每周都有重复事件的项目。因此,我以一种非传统的方式使用了几个 DateTime 字段。我正在研究的是一个 FormBuilder,它创建一个输出工作日选择和时间选择的字段。我正在使用我在网上找到的 12 小时插件,所以它有效:

class ActionView::Helpers::FormBuilder
  def dow_time(dow,time,options={})
    rval = select(dow, DateTime::DAYNAMES)
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true})
  end
end

我遇到的问题是工作日选择实际上没有默认选择值。这适用于我的创建页面,但不适用于编辑页面。 dow 是引用调用模型中的字段的符号,其中星期字符串为“星期一”、“星期二”等。如何使用 dow 从调用模型中提取该值。
self[dow]

不起作用,因为这是在不同的类中。

有任何想法吗?有些不同?

最佳答案

如果您在 FormBuilder 中,则只需使用“对象”变量即可访问当前对象。

前任:

在:edit.html.erb

<% form_for(@event) do |form| %>
  <%= form.custom_datetime_select(:event_starts_at) %>
<% end %>

在您的 FormBuilder 中
def custom_datetime_select(field, options = {})
  start_time = object.send(field)
  ...
end
objectobject_name 都是在您调用 form_for 时为您设置的。

有关更多详细信息,请参阅 actionpack/lib/action_view/helpers/form_helper.rb

关于ruby-on-rails - Rails Formbuilder 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/933356/

10-12 03:14