Ruby of Rails无法在不带字母字符的情况下呈现部分(仅使用数字或前导数字)

时间:2014-11-19 18:47:01

标签: ruby-on-rails ruby ruby-on-rails-4 filenames renderpartial

Rails无法加载只有数字的部分(或者如果数字在字母字符前面引导),我不确定这是我的错误,还是只是渲染的预期行为。

我有:

<%= render "pages/announcements/#{params[:date]}" rescue render 'pages/announcements/none' %>

和两个部分:
页/公告/ _none.html.erb
页/通知/ _2014_09_01.html.erb

始终忽略数字文件名,并加载'none'部分。

当我将其更改为具有前导字母字符时,所有内容都已修复:

<%= render "pages/announcements/news_#{params[:date]}" rescue render 'pages/announcements/none' %>

使用:
页/公告/ _none.html.erb
页/通知/ _news_2014_09_01.html.erb

有人可以解释这种行为或我的错误吗?

1 个答案:

答案 0 :(得分:4)

如果您删除救援,您可能会收到更有用的错误消息:

render partial: '909'

给出:

  

部分名称(909)不是有效的Ruby标识符;确保您的部分名称以小写字母或下划线开头,后跟字母,数字和下划线的任意组合。

这似乎是因为ActionView在内部将部分名称转换为符号。

(我最近碰到了这一点。在我的案例中,在部分名称上加上一个前缀并不是一个很大的限制,希望你的情况也是如此。)