我有一个非常具体的问题来获取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,我会在控制器中将@date作为消息:invalid 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,但是如果我把1和1之前的错误一样,那么无效的日期。
答案 0 :(得分:0)
是的!我懂了!
如果有人需要,我会分享我的答案。
我改变了帮手:
user_spendings_paginate.group_by{ |t| (Date::MONTHNAMES[t.date.month] + " " + t.date.year.to_s) }
如果可以的话,我会在背景中保留当月的英文名称。
然后是观点:
<% 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>
<%= l date_in_link.to_date, format: :pdf %>
<% end %>
当我从帮助者那里得到一个String时,我通过我的链接传递了params,我认为我应该改变语言。所以我写了这个:
l date_in_link.to_date, format: :pdf
在我的yml文件中,我选择了自定义格式:pdf: "%B %Y"
一个月和一年。
结果:
(链接)Février20188
- 消费
- 消费
(链接)Janvier 2018
- 消费
- 消费
当我点击链接时,它会通过英语的params,但是谁在乎。在下一页,我用我想要的语言得到了日期。任务完成!