Ruby-On-Rails如何从单选按钮进行布尔性别选择在show.html中显示为字符串(M或F)

Jil*_*ill 0 boolean ruby-on-rails

在创建新用户时,他们使用单选按钮选择女性男性.当我进入节目视图时,他们的性别显示为真或假,而不是男性或女性.

_form.html.erb
  <%= f.label :gender %><br />
 <%= f.label :gender, "Male", :value => "true"  %>
<%= f.radio_button :gender, true %>
<%= f.label :gender, "Female", :value => "false" %>
<%= f.radio_button :gender, false %>


Show.html.erb
<p>
  <strong>Gender:</strong>
  <%= @user.gender %>
</p>
Run Code Online (Sandbox Code Playgroud)

max*_*max 7

不要使用布尔值来表示性别.

世界上有不少国家(澳大利亚,德国等)允许您合法地拥有其他性别而不是女性或男性.我不想偏离政治讨论,但对于任何不是真正的布尔条件的东西使用布尔值都不是一个好主意.

如果你想要一个最后的参数,为什么你不应该使用布尔值考虑这个:

User.find(1).gender?
Run Code Online (Sandbox Code Playgroud)

这个表达式的返回值是多少?

而是使用enum.这意味着您应该在数据库中使用整数列.

class User < ActiveRecord::Base
  enum gender: [:undisclosed, :female, :male, :other]
end
Run Code Online (Sandbox Code Playgroud)

这将让你做到:

user.male?
User.female # User.where(gender: :female)
user.female! # Makes a user female.
Run Code Online (Sandbox Code Playgroud)

要创建单选按钮,您将使用:

<%= radio_button_tag(:gender, "male") %>
<%= label_tag(:gender_male,   "Male") %>
<%= radio_button_tag(:gender, "female") %>
<%= label_tag(:gender_female, "Female") %>
Run Code Online (Sandbox Code Playgroud)