为什么在 Rails 中添加复选框时会收到错误“undefined method 'merge' for true:TrueCLass”

use*_*032 1 boolean ruby-on-rails scaffolding

我对开发很陌生,希望有人能提供帮助:

当我包含以下复选框时,我收到错误“未定义的方法‘合并’错误:

<%= f.check_box :is_female, true %> <%= f.label :is_female, "Female" %>    
<%= f.check_box :is_female, false %> <%= f.label :is_female, "Male" %> 
Run Code Online (Sandbox Code Playgroud)

上面的代码位于我使用以下内容创建的配置文件文件夹中:

$ rails generate scaffold profiles description:string
Run Code Online (Sandbox Code Playgroud)

然后我生成了以下迁移:

$ rails generate migration add_websites_to_profiles website:string
Run Code Online (Sandbox Code Playgroud)

这创建了迁移文件 *************_add_website_to_profiles.rb

这是 add_websites_to_profiles.rb:

class AddWebsiteToProfiles < ActiveRecord::Migration
  def change


  add_column :profiles, :website, :string
  add_column :profiles, :is_female, :boolean, default: false
  end
end
Run Code Online (Sandbox Code Playgroud)

我手动添加了以下内容:

add_column :profiles, :is_female, :boolean, default: false
Run Code Online (Sandbox Code Playgroud)

当我在复选框中有trueandfalse命令时收到错误。当我删除true false它时,它会出现在没有错误的页面上,但它没有保存到 db。

Sha*_*ell 6

我认为您在两种生成复选框的方式之间混淆了。

f.check_box您正在使用的表单构建器版本需要一个散列作为第二个参数。你需要调用f.check_box(:is_female, {}, true)的值true

check_box_tag另一方面,确实期望一个值作为第二个参数。你可以用check_box_tag(:is_female, true)

但是,正如@Santosh 在评论中指出的那样,如果您希望对象是男性或女性,最好使用一对单选按钮。