之前我使用带有多个复选框的form_tag的check_box_tag。这返回了一个像[“student”,“teacher”]这样的参数中的数组。我只是通过在控制器中创建一个函数并使用参数来计算由共享它们的用户显示的帖子。参数看起来像
user_type=>["student","teacher"]
但现在我转移到form_for标签,因为我使用的是不同的模型,我希望参数格式正确。现在通过的参数看起来像
filter_obj=>{user_type=>["","",""student,"teacher"]}
这是我的复选框代码
<% User::OPEN_USER_TYPES.each do |type|%>
<div class="radio-check-group <%='hide-group' if container == "my-contribution" %>">
<div class="control"><%= f.check_box(:user_type,{:multiple => true},type,nil)%></div>
<div class="label"><%= f.label(:user_type,type,:value=>type)-%></div>
</div>
<% end %>
有没有办法让表单传递像filter_obj =&gt; {user_type =&gt; [“student”,“teacher”]}这样的参数。我不想在我的控制器中进行额外的清理处理。
答案 0 :(得分:1)
我认为您需要:user_type
之后的method name:
f.check_box(:user_type,[method_name],{:multiple => true},type,nil) #method name might be 'occupation'
这有帮助吗?
答案 1 :(得分:1)
我不知道如何使用check_box
这样做。您可以使用check_box_tag
代替check_box
,但它不像check_box
<% User::OPEN_USER_TYPES.each do |type|%>
<div class="radio-check-group <%='hide-group' if container == "my-contribution" %>">
<div class="control">
<%= check_box_tag "filter_obj[user_type][]", type, @filter_obj.user_type.to_a.include?(type) %>
</div>
<div class="label">
<%= f.label(:user_type,type,:value=>type)-%>
</div>
</div>
<% end %>