Ruby on rails Rails Bootstrap_表单-单选按钮不在显示页面中呈现标签名称

Ruby on rails Rails Bootstrap_表单-单选按钮不在显示页面中呈现标签名称,ruby-on-rails,forms,radio-button,bootstrap-form-helper,Ruby On Rails,Forms,Radio Button,Bootstrap Form Helper,我有一个用ruby的bootstrap_form gem构建的表单。在表单中,我有一些单选按钮。表单在表单的编辑页面中以正确的标签完美呈现,但是一旦我保存表单并转到“显示”页面查看结果,单选按钮的输入仅显示单选按钮的值(即数字),而不是我指定的自定义标签名称。如何在“显示”页面中显示自定义标签而不是值 这是我的密码: _form.html.erb: <%= f.form_group :gender, label: { text: "Gender" } do %> <

我有一个用ruby的bootstrap_form gem构建的表单。在表单中,我有一些单选按钮。表单在表单的编辑页面中以正确的标签完美呈现,但是一旦我保存表单并转到“显示”页面查看结果,单选按钮的输入仅显示单选按钮的值(即数字),而不是我指定的自定义标签名称。如何在“显示”页面中显示自定义标签而不是值

这是我的密码:

_form.html.erb:

  <%= f.form_group :gender, label: { text: "Gender" } do %>
    <%= f.radio_button :gender, 0, label: "Female", checked: true, inline: true  %>
    <%= f.radio_button :gender, 1, label: "Male", inline: true  %>
  <% end %>

  <%= f.form_group :nationality, label: { text: "Nationality" } do %>
    <%= f.radio_button :nationality, 0, label: "Kuwaiti", checked: true, inline: true  %>
    <%= f.radio_button :nationality, 1, label: "Non-Kuwaiti", inline: true  %>
  <% end %>

show.html.erb

    <p><strong>Full Name:</strong>&nbsp;&nbsp;<%= @profile.name %></p>
    <p><strong>Civil ID no:</strong>&nbsp;&nbsp;<%= @profile.civil %></p>
    <p><strong>Gender:</strong>&nbsp;&nbsp;<%= @profile.gender %></p>
    <p><strong>Nationality:</strong>&nbsp;&nbsp;<%= @profile.nationality %></p>
    <p><strong>Mobile no:</strong>&nbsp;&nbsp;<%= @profile.mobile %></p>
    <p><strong>Personal Email:</strong>&nbsp;&nbsp;<%= @profile.personal_email %></p>
全名:

公民身份证号码:

性别:

国籍:

手机号码:

个人电子邮件:

提前谢谢你的帮助

更新:-

新表格编号:-

<%= f.form_group :gender, label: { text: "Gender" } do %>
    <%= f.radio_button :gender, 1  %>
    <%= f.label 'Female', inline: true, checked: true  %>
    <%= f.radio_button :gender, 0  %>
    <%= f.label 'Male', inline: true  %>
  <% end %>


尝试了此建议,但仍然遇到相同的问题,只有单选按钮不再对齐且格式不正确。

您希望标签有一个单独的标签。而不是:

<%= f.radio_button :gender, 1, label: "Male", inline: true  %>

你需要:

<%= f.radio_button :gender, 1  %>
<%= f.label 'Male, inline: true  %>

您需要一个查找表
您已保存与单选按钮对应的数值。因此,当您在show.htm.erb中显示变量时,它将显示从数据库记录检索到的数值。这是有道理的。但是您需要与数字关联的字符串,这需要一个查找表

在表单中创建标签不会为字段创建自定义标签。要创建自定义字段标签,需要为activerecord模型设置i18n本地化,这是一个很好的解决方案,但也需要一些时间和学习曲线

创建基于哈希的查找表

活动哈希gem 您可以编写自己的查找帮助程序,或者使用它来简化基于哈希的查找表的实现

示例 注意:我将始终如一地命名helpers以匹配字段名,因此在您看来,调用哪个“to_s”是非常明显的

在您看来

<p><strong>Gender:</strong>&nbsp;&nbsp;<%= gender_to_s(@profile.gender)  %></p>
性别:


注意:如果您想要一个视图帮助器,可以在application_helper.rb中实现,并包含一个传递的参数“type”作为开关控件,但我认为最简单的解决方案是为每个字段创建一个视图帮助器。

确定另一种方法,这样您就有了一整套可供选择的方法。在Rails 4.1中,枚举数据类型是在ActiveRecord中实现的,如本手册第2.5节所述。如果您运行的是Rails 4.1+,则可以利用此新功能

本质上,您需要编写迁移来将布尔值和其他数据类型更改为枚举。例如,对于性别示例,与其将性别设置为0表示女性,1表示男性,并为其维护映射,不如简单地设置:

enum gender: [:female, :male]
你的其他属性也是如此

这最终应该更易于维护,并有助于保持应用程序代码尽可能透明。


 <label><%= form.radio_button :gender, 1, hide_label: true, inline: true%>Female</label>
 <label><%= form.radio_button :gender, 0, hide_label: true, inline: true%>Male</label>
男性

为我工作Bootstrap 4.1

感谢您的回复。我尝试了你建议的代码,但似乎不起作用。如果你不介意检查的话,我根据你的建议用新代码更新了我的问题。谢谢您正在运行哪个版本的Rails?您好,我已经尝试实现了您建议的方法,但是它不能正常工作。我收到一个错误:ProfilesController#update“1”中的ArgumentError不是有效的性别。每当我尝试更新表单时,就会出现错误。我做错了什么?你在运行Rails 4.1+?您能否使用模式、模型和控制器代码中的相关代码片段更新OP(或者开始一个新问题,并在此处以链接进行回答)。感谢您的回答。我尝试添加活动的Hash gem,并按照提供的步骤进行操作,但似乎没有任何效果。我不确定我做错了什么。您能否指导我完成实施过程?我对rails(以及一般的编程)是新手,所以很多这对我来说都是全新的。无论如何,谢谢你的帮助!如果gem不是现成的,那么我建议您创建自己的查找助手。如果您希望在字符串上使用i18n国际化,这也可能会使将来的操作变得更容易。我将用这些信息更新我答案中的最后一部分。看来gem的构建失败了。我希望我添加的视图助手部分能够解决您的问题。让我知道。嘿,很抱歉反应太晚了。我刚刚实现了你关于使用助手的建议,它似乎起了作用,但有一个小问题:无论我选择什么输入,显示页面上单选按钮的结果似乎都停留在一个选项上。例如,如果我在表格中选择“女性”,我仍然会得到“男性”。你知道问题可能是什么吗?不管怎样,我刚刚解决了问题,我把数据类型设置为整数而不是布尔值。您的解决方案非常有效,非常感谢您的帮助!
enum gender: [:female, :male]
 <label><%= form.radio_button :gender, 1, hide_label: true, inline: true%>Female</label>
 <label><%= form.radio_button :gender, 0, hide_label: true, inline: true%>Male</label>