Ruby on rails 在rails中使用选项\u for\u select helper时出现问题
我试图从选择框中获取一个值,以便将该值传递给控制器,但经过多次尝试后,我最终没有找到解决方案 我有这个:Ruby on rails 在rails中使用选项\u for\u select helper时出现问题,ruby-on-rails,ruby,ruby-on-rails-4,helpers,form-helpers,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"
<div class="field">
<%= f.label :activityType %><br>
<%= select_tag(:activityType, options_for_select([
["Cycling", "Cycling"],
["Running", "Running"],
["Swimming", "Swimming"],
["Gymn", "Gymn"]
])) %>
</div>
我做错了什么?在文档中,它们也是这样做的
问题在于,我对presence=true的验证表明该字段为空
谢谢您使用的是
f.label
,因此您可能也想使用f.select
而不是select\u tag
。它们之间的主要区别在于
select_tag(:activityType, options_for_select([[]]) )
准确地给出了activityType
param名称,因此可以通过params[:activityType]
在控制器中访问它,而:
f.select(:activityType, options_for_select([[]]) )
给出参数[:object\u name][:activityType]
。因此,如果您通过params[:object\u name]
创建对象,activityType
为空
注意我使用的是
:object\u name
,因为我不知道您的表单对象名。它可以工作!谢谢@blemlump!一个问题,我在下面有两个“div”:
你能解释一下为什么这与我想要的不同吗?这很有效。感谢您拥有类似于@activity=activity.last的功能。然后在视图中:form_for(@activity)do|f|;f、 选择:放置标识;结束(@activity)do | f |的
或
表格|;选择标签“活动[状态标识]”;结束或表单标签。。。做选择标签“活动[状态标识]”;结束
都是等价的。使用f.select
,则f
会在字段名称中添加额外的上下文(对象名称),以便f.select:state\u id
成为活动[state\u id]
。谢谢!来自葡萄牙的问候:D