我想将引导表单控件类添加到 rails time_select 控件。我试试这个,但它不起作用。
<%= time_select :open_time, :prompt , :default => {:hour => '9', :minute => '30'} , class: "form-control" %>
我想将引导表单控件类添加到 rails time_select 控件。我试试这个,但它不起作用。
<%= time_select :open_time, :prompt , :default => {:hour => '9', :minute => '30'} , class: "form-control" %>
文档状态:time_select(method, options = {}, html_options = {})
所以在你的情况下:<%= time_select :open_time, { prompt: {hour: '9', minute: '30'} }, { class: 'form-control' } %>
这是time_select
rails的方法。
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"} %>
我在使用 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 选项将不会呈现,甚至会抛出错误,因为在这种情况下,您传递的参数超出了方法的要求。一个例子是下面的代码;
<%= 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
方法只接受四个参数,但我们已向它传递了五个参数。
<%= time_select("my_object", "my_method",
prompt: { hour: 'Choose hour', minute: 'Choose minute', second: 'Choose seconds' },
class: "form-control" ) %>
尝试 2 仍然不会呈现 HTML 选项,尽管time_select
方法要求传递的参数数量最多为四个,因为我未能将第三个和第四个参数分组
<%= 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_select
with a form_helper
,应用了 HTML 选项并且它有效,但我决定阅读更多关于该time_select
方法的信息,我开始注意到差异,因此我有理由分享这篇文章。
我意识到将方法中的选项*{}*
与 分组对于两者呈现 HTML 选项是必要的。
我希望它有一个目的!