我试图从选择框中获取一个值,以便将值传递给控制器,但经过多次尝试后,我最终没有解决方案。
我有这个:
<div class="field">
<%= f.label :activityType %><br>
<%= select_tag(:activityType, options_for_select([
["Cycling", "Cycling"],
["Running", "Running"],
["Swimming", "Swimming"],
["Gymn", "Gymn"]
])) %>
</div>
我做错了什么?在文档中他们也这样做..
问题是我对presence = true的验证表明该字段是空白的。
谢谢
答案 0 :(得分:1)
您正在使用f.label
,因此您可能也希望使用f.select
代替select_tag
。它们之间的主要区别在于
select_tag(:activityType, options_for_select([[]]) )
准确地给出activityType
param名称,因此可以通过params[:activityType]
在控制器中访问它,而:
f.select(:activityType, options_for_select([[]]) )
给出params[:object_name][:activityType]
。因此,如果您通过params[:object_name]
创建对象,则activityType
为空。
注意我使用:object_name
,因为我不知道您的表单对象名称。