[英]When using rails Action View Helpers - how can you customize the params to be an Array of the labels?
我有这个看法
...code....
<% @feeds.each do |feed| %>
<%= check_box_tag(feed.name) %>
<%= label_tag(feed.name) %>
<% end %>
...code....
Feed模型如下所示
Feed(id: integer, name: string, description: string, url: string, created_at: datetime, updated_at: datetime, day_selector: string, special_selector: string)
提交像这样进入params哈希
{"utf8"=>"✓",
"authenticity_token"=>"WVbxZckIJCA0dXqPZGnSXJi7yrDN3Ssttv7dnJZOfBY=",
"email"=>"",
"phone_number"=>"",
"Squeaky Beaker"=>"1",
"Commonwealth Cambridge"=>"1",
"commit"=>"GO",
"action"=>"create",
"controller"=>"subscriptions"}
我希望参数哈希看起来这个
{:feeds => {'Squeaky Beaker' => 1, 'Commonwealth Cambridge' => 1}}
或者只是
[{'Squeaky Beaker' => 1, 'Commonwealth Cambridge' => 1}]
如何自定义视图以使params哈希看起来像我想要的方式?
未经测试,但您可以尝试...
<ul>
<% @feeds.each do |feed| %>
<li>
<%= check_box_tag 'feeds[]', (feed.name => 1) -%>
<%= h feed.name -%>
</li>
<% end %>
</ul>
我不确定=> 1
对您的应用程序是否有价值,因此更传统的方法是
<%= check_box_tag 'feeds[]', feed.name -%>
从http://apidock.com/rails/ActionView/Helpers/FormTagHelper/check_box_tag的文档解释
复选框
为了进一步说明SteveTurczyn
的答案,您现在基本上正在执行的操作是输出两个checkboxes
(彼此完全不同),两个checkboxes
的值都为“ 1”(已选中):
<% @feeds.each do |feed| %>
<%= check_box_tag(feed.name) #-> feed.name will be different each time %>
<%= label_tag(feed.name) %>
<% end %>
您需要为复选框赋予相同的名称,以使Rails能够辨别其值是否不同。 其次,您还需要确保盒子也具有正确的价位/选项:
<% @feeds.each do |feed| %>
<%= check_box_tag "feeds[]", feed.name %>
<% end %>
这将通过如下参数:
["checked_value_1", "checked_value_2"]
如果使用提要的名称,它将为您提供:
["Feed1", "Feed2"] #-> names
["5", "6", "7" ] #-> ids
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.