simple form collection translation

浪子不回头ぞ 提交于 2019-12-22 08:51:36

问题


Using the translation example here that translates the :male, :female options using Ruby I18n, the form will be:

View: _form.html.erb

<%= f.input :gender, collection: [:male, :female] %>

Generated HTML:

<option>Male</option>
<option>Female</option>

So when submitting, the form uses the translated values.

How can I change the view code to submit ["male", "female"] values instead of ["Male", "Female"]?

My best shot so far is pretty ugly:

<%= f.input :gender, collection: [:male, :female].map{|v| [t("simple_form.options.user.gender.#{v.to_s}", v] %>

回答1:


In your view, you should just use

<%= f.input :gender, collection: [:male, :female] %> 

In your yaml file, you should have

simple_form:
  options:
    user: (or defaults:)
      gender:
        male: Male
        female: Female

This should automatically translate into

<option value="male">
  Male
</option>

It is the values that will go back to the controller, not the translated words.

If not, there is something wrong...



来源:https://stackoverflow.com/questions/22095480/simple-form-collection-translation

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!