簡體   English   中英

使用Rails Action View幫助器時,如何自定義參數使其成為標簽數組?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM