0

我想将引导表单控件类添加到 rails time_select 控件。我试试这个,但它不起作用。

 <%= time_select :open_time, :prompt , :default => {:hour => '9', :minute => '30'} ,  class: "form-control" %>
4

3 回答 3

0

文档状态:time_select(method, options = {}, html_options = {})

所以在你的情况下:<%= time_select :open_time, { prompt: {hour: '9', minute: '30'} }, { class: 'form-control' } %>

于 2017-03-25T11:04:48.850 回答
0

这是time_selectrails的方法。

def time_select(object_name, method, options = {}, html_options = {})
  Tags::TimeSelect.new(object_name, method, self, options, html_options).render
end

因此,通过上述方法,您可以使用html_options添加html属性。

所以,你的代码变成了,

 <%= time_select :open_time, :prompt , :default => {:hour => '9', :minute => '30'} ,  html_options: {class: "form-control"} %>

这是参考

于 2017-03-25T11:09:17.980 回答
0

我在使用 Bootstrap 进行样式设计时遇到了类似的挑战,time_select在阅读了文档后,我能够让它们工作。

我注意到,在使用时,使用的form_helpers方式有些不同time_select,下面是示例;

time_select不使用form_helper

语法是time_select(object_name, method, options = {}, html_options = {}),可以看出 HTML 选项是第四个参数,因此应用 Bootstrap 类只有在传递给第四个参数时才能工作。

在这种情况下,实际的实现可以如下所示;

<%= time_select("my_object", "my_method", {include_seconds: true, prompt: { hour: 'Choose hour', minute: 'Choose minute', second: 'Choose seconds' } }, {class: "form-control"} ) %>

可以清楚地看到,我使用花括号**{}**将各种选项组合在一起,否则,HTML 选项将不会呈现,甚至会抛出错误,因为在这种情况下,您传递的参数超出了方法的要求。一个例子是下面的代码;

尝试 1

<%= time_select("my_object", "my_method", include_seconds: true,
    prompt: { hour: 'Choose hour', minute: 'Choose minute', second: 'Choose seconds' }, 
    class: "form-control" ) %>

尝试 1 不会呈现 HTML 选项,因为该time_select方法只接受四个参数,但我们已向它传递了五个参数。

尝试 2

<%= time_select("my_object", "my_method",
    prompt: { hour: 'Choose hour', minute: 'Choose minute', second: 'Choose seconds' }, 
    class: "form-control" ) %>

尝试 2 仍然不会呈现 HTML 选项,尽管time_select方法要求传递的参数数量最多为四个,因为我未能将第三个和第四个参数分组

尝试 3

<%= time_select("my_object", "my_method", 
    { prompt: { hour: 'Choose hour', minute: 'Choose minute', second: 'Choose seconds' } }, 
    {class: "form-control" } ) %>

尝试 3 将呈现传递给该方法的 HTML 选项。在尝试将第三个和第四个参数分组的几个选项时,我注意到将它们分组**{}**是很重要的,也是避免错误和不呈现 HTML 选项的唯一方法。

time_select_form_helper

我注意到有时我们会错误地区分两者(当使用time_select有和没有form_helper.

以下是该time_select方法的语法,如果与文档form_helper中所示的a 一起使用;

time_select(method, options = {}, html_options = {})

可以看出,两者之间 (time_select(object, method, options = {}, html_options = {} )time_select(method, option = {}, html_options = {}) 在传递给它们的参数方面并不相同。

下面的代码块是我如何用form_helper;

<%= form.time_select :duration, {include_seconds: true, 
    prompt: { hour: 'Choose hour', minute: 'Choose minute', second: 'Choose seconds' }}, 
    {class: "form-control"} %>

为什么我回答

我试着用解释来回答这个问题,这样我们就可以清楚地看到差异;因为我第一次使用time_selectwith a form_helper,应用了 HTML 选项并且它有效,但我决定阅读更多关于该time_select方法的信息,我开始注意到差异,因此我有理由分享这篇文章。

重要的

我意识到将方法中的选项*{}*与 分组对于两者呈现 HTML 选项是必要的。

我希望它有一个目的!

于 2021-04-03T15:13:01.813 回答