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