Ruby on rails 3 Rails3选择框发布一个空白变量,但HTML格式良好
我的视图中的select标记有问题 首先,我使用的是Rails 3.1.1和Ruby 1.9.2 p290 该型号是一种耗材,具有名称、供应商、再订购编号、类型以及与之兼容的相关打印机型号 未正确验证的字段是类型,该类型是从耗材模型中的数组中输入的值,验证应针对数组中的一个元素进行 在模型中,我这样定义字段的验证Ruby on rails 3 Rails3选择框发布一个空白变量,但HTML格式良好,ruby-on-rails-3,forms,validation,Ruby On Rails 3,Forms,Validation,我的视图中的select标记有问题 首先,我使用的是Rails 3.1.1和Ruby 1.9.2 p290 该型号是一种耗材,具有名称、供应商、再订购编号、类型以及与之兼容的相关打印机型号 未正确验证的字段是类型,该类型是从耗材模型中的数组中输入的值,验证应针对数组中的一个元素进行 在模型中,我这样定义字段的验证 TYPES = [ "REM", "REM-HICAP", "OEM", "OEM-HICAP" ] validates :type, inclusion: TYPES 在部
TYPES = [ "REM", "REM-HICAP", "OEM", "OEM-HICAP" ]
validates :type, inclusion: TYPES
在部分耗材的视图表单中,我创建了select标记
<div class="field">
<%= f.label "Type" %><br />
<%= f.select :type, Consumable::TYPES, prompt: 'Select a type...',
:selected => params[:type] %>
</div>
正如调试信息所显示的那样,使用“选择”框中的值正确设置了类型字符串,并且模型中的类型是字符串。相反,该表单显示验证错误类型不包括在列表中,如果我删除验证,数据库将显示类型字段的nil值
验证在什么时候应用于表单,控制器是否通过尝试保存对象来触发它
在Rails第四版的敏捷Web开发中,我在depot应用程序中使用了相同的方法来验证下拉框,基本上使用了相同的代码,但是数组的名称不同,并且它工作正常
我刚刚在depot应用程序中测试了相同的验证,它在同一个工作站上工作,所以我会计算出设置不一致的情况
谢谢我终于发现了我的错误:类型在Rails中受保护,并将变量名更改为Kind以使其正常工作
<div class="field">
<label for="consumable_Type">Type</label><br />
<select id="consumable_type" name="consumable[type]">
<option value="">Select a type...</option>
<option value="REM">REM</option>
<option value="REM-HICAP">REM-HICAP</option>
<option value="OEM">OEM</option>
<option value="OEM-HICAP">OEM-HICAP</option>
</select>
</div>
---
utf8: ?
_method: put
authenticity_token: nZZ9MastYswVCDrvAbgVLTUWqSRZLVrvRLmxOqPYk7I=
consumable:
description: Black Toner
supplier_id: '1'
reorder_no: '123456'
type: OEM
printer_model_ids:
- '1'
- '3'
commit: Update Consumable
action: update
controller: consumables
id: '1'