Rails 上的复选框

Posted

技术标签:

【中文标题】Rails 上的复选框【英文标题】:Checkboxes on Rails 【发布时间】:2010-10-11 21:40:42 【问题描述】:

在 Ruby on Rails 中制作与某个问题相关的复选框的正确方法是什么?目前我有:

<div class="form_row">
    <label for="features[]">Features:</label>
    <br><%= check_box_tag 'features[]', 'scenarios' %> Scenarios
    <br><%= check_box_tag 'features[]', 'role_profiles' %> Role profiles
    <br><%= check_box_tag 'features[]', 'private_messages' %> Private messages
    <br><%= check_box_tag 'features[]', 'chatrooms' %> Chatrooms
    <br><%= check_box_tag 'features[]', 'forums' %> Forums
    <br><%= check_box_tag 'features[]', 'news' %> News
    <br><%= check_box_tag 'features[]', 'polls' %> Polls
</div>

我还希望能够自动检查以前选择的项目(如果重新加载此表单)。我如何将参数加载到这些的默认值中?

【问题讨论】:

【参考方案1】:

您正在查看以下内容:

<div class="form_row">
    <label for="features[]">Features:</label>
    <% [ 'scenarios', 'role_profiles', ... , 'polls' ].each do |feature| %>
      <br><%= check_box_tag 'features[]', feature,
              (params[:features] || ).include?(feature) %>
      <%= feature.humanize %>
    <% end %>
</div>

虽然如果你已经有一个Feature 模型,有一个features 表和一个has_many :features 关系,你可能想要这个:

<div class="form_row">
    <label for="feature_ids[]">Features:</label>
    <% for feature in Feature.find(:all) do %>
      <br><%= check_box_tag 'feature_ids[]', feature.id,
              @model.feature_ids.include?(feature.id) %>
      <%= feature.name.humanize %>
    <% end %>
</div>

【讨论】:

#<:base:0x228bf5c> 的未定义局部变量或方法“特性” 那么,什么模型有特征关联,它存储到什么变量中? @文章? @产品? :) 实际上,为什么不发布您的视图操作(来自控制器)相关模型的整个代码? 这不直接映射到任何模型。根据我原来的帖子,我有一个问题,需要几个选项。然后,如果页面有任何参数,我希望能够自动检查选项。 很好。请参阅更新后的 first 示例以了解您的具体情况。

以上是关于Rails 上的复选框的主要内容,如果未能解决你的问题,请参考以下文章

Rails 4:如何在 Rails 中使用 JQuery 禁用基于复选框值的文本字段

Rails:表单提交确认消息中的选中复选框

使用 HABTM 关系更新复选框的值——Rails

Rails复选框格式

Rails 复选框 AJAX 调用,不想渲染任何东西

在 Rails 上将复选框默认设置为 true