Rails无法通过单选按钮保存值

时间:2013-10-29 13:29:19

标签: ruby-on-rails sqlite radio-button simple-form

我的这一行是用简单形式制作的:

 <fieldset>
    <legend>Any acessory?</legend>
      <li><%= f.input :has_acessory, label: false, collection: ["0","1"], as: :radio_buttons, input_html:{ name: 'has_acessory'} %></li>
</fieldset>

和Simple Form生成此代码:

<fieldset>
    <legend>Any Acessory?</legend>
      <li><div class="input radio_buttons optional lending_has_acessory"><label class="radio"><input checked="checked" class="radio_buttons optional" id="lending_has_acessory_0" name="has_acessory" type="radio" value="0" />0</label><label class="radio"><input class="radio_buttons optional" id="lending_has_acessory_1" name="has_acessory" type="radio" value="1" />1</label></div></li>
</fieldset>

我正在使用SQLite3,其中有一个名为lendings的表,其中包含一个名为has_acessory的Integer列,它的默认值为:0

在贷款模式中:

class Lending < ActiveRecord::Base
attr_accessible :devolution_date, :lending_date, :situation, :description,:has_acessory, :person_id, :equipment_id
#Associations
belongs_to :equipment
belongs_to :person

但是我在单选按钮中选择的值无关紧要,我总是在has_acessory列中得到“0”(默认值)。我已经检查了参数,我可以找到“has_acessory”=&gt ;“0”或“1”。

对我来说这部分工作得很好,但为什么不能将它保存在has_acessory列中呢?

2 个答案:

答案 0 :(得分:0)

试试这个

将此行添加到控制器方法

params[:has_acessory] = params[:has_acessory].to_i

答案 1 :(得分:0)

我会尝试让rails为你做更多的工作。

请尝试<%= f.input :has_acessory %>,看看它给你带来了什么。

拥有所有这些<%= f.input :has_acessory, label: false, collection: ["0","1"], as: :radio_buttons, input_html:{ name: 'has_acessory'} %>会使调试变得困难。

请查看迁移/数据库并确保该字段是布尔值。如果是的话,rails将为您找出所有正确的选项。

另外 - 你说该字段有默认值 - 但我在模型中没有看到。你刚才在模型中省略了这一行吗?它是在rails模型和数据库中吗?