【发布时间】:2018-02-17 09:48:32
【问题描述】:
我有一个非常具体的问题是在 I18n 中获取月份名称。我每月和每年对一些信息进行分组,当我想翻译它时,看起来像 é 或 û 这样的特定字符的整个月都不起作用,其余的都在哪里。让我向您展示它的外观:
助手:
def user_spendings_paginate
user.spendings.all.order('date DESC').paginate(:page => params[:page], :per_page => 15)
end
def grouped_spendings
user_spendings_paginate.group_by{ |t| t.date.to_date == DateTime.now.to_date }
end
def month_wise_sorted_spendings
if user_spendings_paginate.present?
user_spendings_paginate.group_by{ |t| t("date.month_names")[t.date.month] + " " + t.date.year.to_s }
end
end
如您所见,我调用了所有 user.spendings。我将它们分组两次,第一个获取当天的日期,另一个获取每月和每年的其余部分。如您所见,我是月份名称。在我的 yml 文件中,我有:
month_names:
-
- Janvier
- Février
- Mars
- Avril
- Mai
- Juin
- Juillet
- Aout
- Septembre
- Octobre
- Novembre
- Decembre
我尝试从 Décembre 中删除 é 并从 Août 中删除 û 尝试,但问题仍然存在。
我的控制器:
if params[:month]
@date = Date.parse("#{params[:month]}")
else
flash[:error] = t(".something_wrong")
redirect_to myspendings_path(locale: I18n.locale)
end
我的看法:
<% date_in_link = " #{month}" %>
<p><%= link_to myspendingsdetail_path(:month => month, locale: I18n.locale), class: "btn btn-secondary" do %>
<i class="fa fa-link"></i>
<%= date_in_link %>
<% end %>
所以基本上我所做的是将每月和每年的支出分组。然后,我循环遍历所有 user.spendings,并将上面的这部分代码添加到组合中,这样你就有了一个根据日期的链接,你可以点击它并将你发送到一个新页面,其中包含大约一年中的这个月的更多信息。
它有效,但仅适用于没有特定角色的月份。如果我尝试使用 Février,我会收到一条消息:invalid date for @date 在控制器中。
我认为它来自特殊角色,因为其余部分都在工作。
我希望解释清楚,我已经尽力了。如果您需要更多内容,请告诉我。
我认为@date 变量缺少某些内容,但我不确定。有人帮忙吗?
编辑:
我的网址在工作时看起来像这样:
http://localhost:3000/fr/myspendingsdetail?month=Janvier+2018
当它不起作用时:
http://localhost:3000/fr/myspendingsdetail?month=Decembre+2018
有趣,但是当我这样写月份时:
http://localhost:3000/fr/myspendingsdetail?month=12+2018
它有效,所以这确实是一个性格问题
编辑 2:
很好用...如果我把 12 放在 2 月,他会带我来,同样适用于 2,但如果我把 1 放在 1 月,则与以前相同的错误,无效日期。
【问题讨论】:
-
好的,所以最后我不明白问题出在哪里。我尝试了 Décembre,当然在我的 URL 中我有:
http://localhost:3000/fr/myspendingsdetail?month=Décembre+2018,因为 é 是不行的,但是如果我将其更改为:http://localhost:3000/fr/myspendingsdetail?month=Decembre+2018它可以工作,之前它没有......我不明白...
标签: ruby-on-rails date group-by internationalization ruby-on-rails-5