繁体   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