Rails中的简单性别单选按钮(包括标签和i18n)

时间:2013-01-07 17:24:54

标签: ruby-on-rails ruby internationalization radio-button

我目前正在开发Rails应用。在应用程序中,应该可以编辑用户的性别。

我想通过收音机盒实现这一点(通常这样做)。这就是我想出的:

form_for @user do |f|
  - [:female, :male].each do |gender|
    = f.label :gender, t(:"helpers.label.member.gender_#{gender}"), value: gender
    = f.radio_button :gender, gender, checked: @user.gender == gender

我想从视图中删除尽可能多的逻辑,并尝试使用视图助手构建相同的逻辑但是失败了。

如何指定一个帮助方法,这样就简单了

f.gender_select

f.gender_select @member

只显示正确的收音机盒?

另外,如何以某种方式指定各个选项的标签,Rails i18n利用它(例如f.label :first_name将自动翻译)

1 个答案:

答案 0 :(得分:2)

form_for @user do |form|
  - gender_radio_buttons(form)

application_helper.rb

module ApplicationHelper

  def gender_radio_buttons(form)
    [ :female, :male ].map do |gender|
      form.label(:gender, t(:"helpers.label.member.gender_#{gender}"), value: gender) +
      form.radio_button(:gender, gender, checked: @user.gender == gender)
    end.join("\n")
  end