[英]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.