Rails Formbuilder 问题

发布于 2024-07-22 21:19:02 字数 609 浏览 8 评论 0原文

我正在开展一个每周都会发生重复事件的项目。 因此,我以非传统方式使用多个日期时间字段。 我正在研究的是一个 FormBuilder,它创建一个字段,输出工作日的选择和时间的选择。 我正在使用我在网上找到的一个十二小时插件,所以它可以工作:

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]

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

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

I'm working a project that has recurring, weekly events. Thus, I use several DateTime fields in a nontraditional way. What I'm working on is a FormBuilder that creates a field that outputs a select for a weekday, and a select for time. I'm using a twelve-hour plugin I found online, so that works:

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

The problem I'm having is that the weekday select doesn't actually have a default selected value. This works fine on my create pages, but not on the edit pages. dow is a symbol that references the field in the calling model where the day of the week string is "Monday", "Tuesday", etc. How can I pull that value out of the calling model using dow.

self[dow]

Doesn't work since this is in a different class.

Any ideas? Something different?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

把回忆走一遍 2024-07-29 21:19:02

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

例如:

在: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

当您调用 form_for 时,会为您设置 objectobject_name

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

If you're inside a FormBuilder, then you can access the current object by simply using the 'object' variable.

Ex:

In: edit.html.erb

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

In your FormBuilder

def custom_datetime_select(field, options = {})
  start_time = object.send(field)
  ...
end

Both object and object_name are set for you when you call form_for.

See actionpack/lib/action_view/helpers/form_helper.rb for more details.

蓝海 2024-07-29 21:19:02

这应该对你有用......

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

This should work for you ...

class ActionView::Helpers::FormBuilder
  def dow_time(dow_model, time, options={})
    rval = select(dowmodel, :dow, DateTime::DAYNAMES)
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true})
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文