【问题标题】:Input Selection (Not Telling/Male/Female) in Rails4Rails4中的输入选择(不告诉/男/女)
【发布时间】:2026-02-08 23:05:01
【问题描述】:

对不起,如果这是一个太简单的问题,但它困扰着我。

我需要为

创建一个简单的选择字段
  • 不说
  • 女性

未输入时默认为“不“告诉”。

我只是像这样运行迁移:

rails g migration AddGenderToListings gender:select

然后在我的个人资料编辑表单中

<%= f.select :gender, [["Not Telling", 1], ["Male", 2], ["Female", 3]] %>

但是我之后如何在显示页面上显示它??

如果只是 则输入选择的编号。

有什么启示吗?

【问题讨论】:

    标签: ruby-on-rails devise simple-form ruby-on-rails-4


    【解决方案1】:

    添加新的迁移以设置默认值

    或者回滚你的迁移,把它改成

    add_column :listings, :gender, :integer, :default => 1
    

    然后再次迁移

    编辑 在模型中你可以添加

    def gender_txt
      ["Not Telling", "Male", "Female"][self.gender - 1]
    end
    

    在您的视图中,您可以使用显示

    @user1.gender_txt
    @user2.gender_txt
    

    【讨论】:

    • 似乎有效,谢谢。但是之后我如何在显示页面上显示性别? @user.gender 只是输入选择的数量。
    • 你可以做类似["Not Telling", "Male", "Female"][@user.gender - 1]的事情。
    • 很多用户可以设置他们的性别,我如何显示他们呈现选择。只是删除我的编辑表单中的数字?或者我没有让你正确。性别显示的代码应该是什么?
    • 您可以在用户模型中定义ArrayHash,其中包含字符串。现在您可以使用键或索引来访问它们,这是存储在数据库中的数字。
    • 很抱歉,但我对 Rails 并不陌生。你介意编辑你的答案吗? :)
    【解决方案2】:

    在您的模型中,您可以添加:

    GENDER_TYPES = ["Not telling","Male", "Female"]
    

    然后以你的形式:

    <%= f.select :gender,  User::GENDER_TYPES %>
    

    以上是对我有用的简单修复。

    【讨论】:

      最近更新 更多