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。
我认为您在两种生成复选框的方式之间混淆了。
f.check_box您正在使用的表单构建器版本需要一个散列作为第二个参数。你需要调用f.check_box(:is_female, {}, true)的值true。
check_box_tag另一方面,确实期望一个值作为第二个参数。你可以用check_box_tag(:is_female, true)。
但是,正如@Santosh 在评论中指出的那样,如果您希望对象是男性或女性,最好使用一对单选按钮。