【问题标题】:saving values from radio buttons to database. rails app将值从单选按钮保存到数据库。导轨应用
【发布时间】:2017-07-05 20:36:27
【问题描述】:

我正在向我的页面添加单选按钮。 我希望用户能够选择是发送订单还是取货。

我无法将值保存到数据库中。

有人可以给我建议吗?

    <div class="col-md-5 pick-up-buttons" id="country_div">

    <li><%= f.radio_button :pick_up, true %></li>
    <li><%= f.label :pick_up, "Pick up order in store", :value => "false"  %></li>


    <li><%= f.radio_button :pick_up, false, :checked => true %></li>
    <li><%= f.label :pick_up, "have the order delivered", :value => "true" %></li>

  </div>    

这里是 schema_file

  create_table "orders", force: :cascade do |t|
    t.string   "name"
    t.string   "email"
    t.text     "address"
    t.string   "city"
    t.string   "country"
    t.datetime "created_at",                 null: false
    t.datetime "updated_at",                 null: false
    t.boolean  "shipped",    default: false
    t.string   "pick_up"

  end

【问题讨论】:

  • 应该是布尔类型
  • ok...有办法改变吗?
  • 您需要运行另一个迁移并更新字段的数据类型
  • 如果你愿意,我可以给你解决方案
  • 谢谢你,那太好了

标签: ruby-on-rails ruby radio-button


【解决方案1】:

只要运行:

rails generate migration changeStringToBooleanOfPickup

然后将生成的迁移文件修改为:

change_column :orders, :pick_up, 'boolean USING CAST(pick_up AS boolean)'

然后执行 耙分贝:迁移

【讨论】:

  • 我在执行rake db:migrate PG::DatatypeMismatch: ERROR: column "pick_up" cannot be cast automatically to type boolean HINT: You might need to specify "USING pick_up::boolean". : ALTER TABLE "orders" ALTER COLUMN "pick_up" TYPE boolean 时收到此错误消息
  • 通过执行 = def change change_column :orders, :pick_up, 'boolean USING CAST(pick_up AS boolean)' end 修复它
  • 更新了答案是的,你可以通过使用它来做到这一点,它现在工作了吗?
【解决方案2】:

pickup 列的数据类型应为布尔值以保存真/假值。

<%= f.radio_button :pick_up, "1", checked: @order.pick_up?, data: { question: 'Pick up order in store' } %> <%= f.label :pick_up, "Yes" %>
<%= f.radio_button :pick_up, "0", checked: @order.pick_up?, data: { question: 'have the order delivered?' } %> <%= f.label :pick_up, "No" %>

【讨论】:

  • 谢谢你,但是,我怎么把它变成 'have the order delivered?' 默认检查?
  • 这听起来可能很愚蠢,但是否应该将value "1"插入代码中?我尝试插入但总是出错
  • 试试这个:&lt;%= f.radio_button :pick_up, "1", checked: @order.pick_up?, data: { question: 'have the order delivered?' } %&gt; &lt;%= f.label :pick_up, "No" %&gt;
  • 试试&lt;%= f.radio_button :pick_up, "1", checked: true, data: { question: 'have the order delivered?' } %&gt; &lt;%= f.label :pick_up, "No" %&gt;
猜你喜欢
  • 1970-01-01
  • 2018-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-02
  • 2015-11-30
  • 1970-01-01
  • 2020-01-21
相关资源
最近更新 更多