在rails中使用options_for_select帮助程序的问题

时间:2014-11-15 17:07:35

标签: ruby-on-rails ruby ruby-on-rails-4 helpers form-helpers

我试图从选择框中获取一个值,以便将值传递给控制器​​,但经过多次尝试后,我最终没有解决方案。

我有这个:

<div class="field">
    <%= f.label :activityType %><br>
    <%= select_tag(:activityType, options_for_select([
                                                      ["Cycling", "Cycling"], 
                                                      ["Running", "Running"],                     
                                                      ["Swimming", "Swimming"], 
                                                      ["Gymn", "Gymn"]
                                                     ])) %>
</div>

我做错了什么?在文档中他们也这样做..

问题是我对presence = true的验证表明该字段是空白的。

谢谢

1 个答案:

答案 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,因为我不知道您的表单对象名称。