ard*_*igh 1 yaml ruby-on-rails internationalization
我的Rails应用程序当前使用collection_select来选择下拉等的查找值.这有两个好处:
例如:edit.html.erb
<div class="field">
<%= f.label :course_type %><br />
<%= f.collection_select :course_type, Lookup.find(:all,:conditions => ["model_name = 'course' and field_name = 'course_type'"]), :id, :lookup_text, include_blank: false,:prompt => "Course Type" %>
</div>
Run Code Online (Sandbox Code Playgroud)
course_controller.rb
private
def get_lookups
@course = Course.find(params[:id])
@course_type = Lookup.find(@course.course_type).lookup_text
Run Code Online (Sandbox Code Playgroud)
show.html.erb
<b>Course type:</b>
<%= @course_type %>
Run Code Online (Sandbox Code Playgroud)
我的应用程序将是多语言的,Rails通过使用区域设置文件来处理这个问题.
问题是:是否可以(并且明智地)从yml文件而不是模型/表中填充查找值,并且可以轻松扩展以处理多种语言吗?如何用基于yml的代码替换上面的代码?
一种解决方案是在DB中保留翻译,也许使用我们的Traco lib.我怀疑它会起作用collection_select.
如果你想从你的翻译YML文件中提取选项,我建议options_for_select.总而言之:
en.yml
en:
my_options:
one: "Option 1"
two: "Option 2"
Run Code Online (Sandbox Code Playgroud)
视图:
select_tag :foo, options_for_select(t("my_options").invert)
Run Code Online (Sandbox Code Playgroud)
如果您翻译非叶键,Rails i18n会为您提供哈希值,例如"my_options".你需要的是invert因为options_for_select期望值之前的文本,而翻译哈希是另一种方式.
| 归档时间: |
|
| 查看次数: |
1758 次 |
| 最近记录: |