【问题标题】:Rails checbox boolean values won't insert anything into databaseRails 复选框布尔值不会将任何内容插入数据库
【发布时间】:2015-10-13 04:28:55
【问题描述】:

我一直在尝试让这个东西工作一段时间,但似乎没有任何东西可以让它工作,我已经从可用的示例中尝试了很多东西,但它们都不起作用。我不确定我的控制器上发生了什么具有正确的强参数并且表单具有正确的属性。

无论如何,这是我的代码:

def survey_params
    params.require(:survey).permit(:name, :status, :user_id, 
        questions_attributes:[:id, :question_content, :survey_id])
end

有问题的属性是状态,每当我将它放在我的表单中时,它似乎都不想使用它。这是我的表格:

<%= form_for(@survey) do |f| %>
  <% if @survey.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(@survey.errors.count, "error") %> prohibited this survey from being saved:</h2>

      <ul>
      <% @survey.errors.full_messages.each do |message| %>
        <li><%= message %></li>
      <% end %>
      </ul>
    </div>
  <% end %>

  <div class="field">
    <%= f.label :name %><br>
    <%= f.text_field :name %>
  </div>
  <%= f.fields_for :questions do |builder| %>
    <%= render 'question_fields', f: builder %>
  <% end %>
  <div class="field">
    <%= f.check_box :status%>
    <%= f.label :status, "Publish(only check this if you are sure 
    this is your final version of the survey)"%>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

相关部分是这样的:

<div class="field">
        <%= f.check_box :status%>
        <%= f.label :status, "Publish(only check this if you are sure 
        this is your final version of the survey)"%>
</div>

我还确保这是在调查模型中:

class Survey < ActiveRecord::Base
  belongs_to :user
  has_many :questions, dependent: :destroy

  validates_presence_of :name
  accepts_nested_attributes_for :questions
end

所以我不明白为什么它不起作用,因为一切都设置好了,所以它起作用了。我也尝试过使用check_box_tag(:status),它也不起作用。它应该在数据库中插入 1 或 0。不知道它的设置方式是否已经应该发生,我看到有些人说他们插入真或假,但是数据库中的布尔值(据我所知)只是 1 或 0。

【问题讨论】:

  • 布尔列通常允许 TRUEFALSENULL,而不仅仅是 1 和 0。
  • 好的,没关系,除了我现在得到的是一列整数而不是布尔值。也许如果我改变它,这可行吗?

标签: ruby-on-rails ruby ruby-on-rails-4 checkbox


【解决方案1】:

想通了,只是把状态栏从t.integer改成了t.boolean

将我的迁移示例留在这里,以防有人遇到此问题。

类 CreateSurveys

  def change
    create_table :surveys do |t|
      t.string :name
      t.boolean :status
      t.references :user, index: true, foreign_key: true

      t.timestamps null: false
    end
  end
end

感谢 Ogz 向导的澄清,帮助我弄清楚了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    相关资源
    最近更新 更多