7

我正在使用 date_select 方法生成 3 个 html 选择,即日、月和年。但我需要每个选择都有一类 CSS。

我还没有在文档中找到如何将参数传递给助手,我尝试了几种方法,但什么也没做。

导轨视图:

<%= f.date_select :birthday, :order => [:day, :month, :year], :start_year => 1910, :end_year => 2012, :html => {:class => ['day', 'month', 'year']} %>

HTML 输出:

<select id="poll_user_birthday_3i" name="poll_user[birthday(3i)]">
<select id="poll_user_birthday_2i" name="poll_user[birthday(2i)]">
<select id="poll_user_birthday_1i" name="poll_user[birthday(1i)]">

像我一样的 HTML 输出:

<select id="poll_user_birthday_3i" name="poll_user[birthday(3i)]" class="day">
<select id="poll_user_birthday_2i" name="poll_user[birthday(2i)]" class="month">
<select id="poll_user_birthday_1i" name="poll_user[birthday(1i)]" class="year">

谢谢!

4

4 回答 4

8

他们解决这个问题的方法是使用 css

看法

<span class="datetime"> <%= f.date_select :birthdate, :order => [:day, :month, :year], :start_year => 1910, :end_year => 2012 %></span>

CSS

.datetime select:nth-child(1){
  width: 130px;
  text-indent: 15px; 
}

.datetime select:nth-child(2) {
  width: 200px;
  text-indent: 5px;
}

.datetime select:nth-child(3) {
  width: 110px;
  text-indent: 15px;
}
于 2013-02-20T17:39:04.083 回答
3

Rails 现在确实做到了 OP 想要的。

:with_css_classes - 如果要为“选择”标签分配不同的样式,请设置为 true。此选项会自动为您的“选择”标签设置“年”、“月”、“日”、“小时”、“分钟”和“秒”类。

资源

于 2013-09-04T11:39:28.120 回答
2

不幸的是,date_select它没有提供将不同的 html 选项传递给每个选择的方法。可选html_options参数应用于它们中的每一个。

您可以使用单独的助手select_day select_hourselect_minute自己编译。

这样,您可以将单独的类传递给每个类。

于 2012-04-05T15:41:23.527 回答
2

根据 rails 文档(http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html#method-i-date_select),方法定义如下。

date_select(object_name, method, options = {}, html_options = {})

使用上述选项,您可以指定您的代码,如下所示。

     <%= f.date_select :birthday, {:order => [:day, :month, :year], :start_year => 1910, :end_year => 2012}, {:class => 'common-class'} %>

您传递的 html 选项将被丢弃,因为它没有按照文档进行,因此您无法在 date_select 中应用任何类。

您可以参考以下线程以获取更多信息。

如何在 Rails 中为 collection_select 设置 HTML 选项?

此外,您需要按照 lebreeze 的建议编写单独的辅助方法并应用上述步骤以获得准确的输出。

希望能帮助到你。

于 2013-01-29T16:10:40.000 回答