0

我目前正在开发 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将自动翻译)

4

1 回答 1

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
于 2013-01-07T19:03:00.510 回答