ruby-on-rails - 如何确保根据事件记录对象属性最初检查 rails f.check_box(不是 check_box_tag)?

标签 ruby-on-rails

玩得很开心;我确信我只是没有得到完全明显的东西,因为我无法想象这是故意如此困难。其他一切都在我的表单中工作,但是在初始显示时,复选框没有被选中。这是相关的erb:

<%= form_for :project, :url=>{:controller=>'projects', :action=>'update_permissions', :id=>@project.id} do |f| %>
<fieldset>
  <% @project.contributors.each do |contributor| %>
  <%= f.fields_for "contributors[#{contributor.id}]" do |c| %>
  <ul id="PermissionsList" class="permissions-grid in-line clearfix full">
  <li>

   <ul class = "clearfix permission-row">
    <li class="first">
     <%= c.check_box :is_active %><label for="<%= contributor.id %>"><%= contributor.user.whole_name %></label>

    </li>
    <% @roles.each do |role| %>
     <li><%= c.radio_button :role_id, role.id, :id=>"#{contributor.id}-#{role.id}" %><%= label "#{contributor.id}-#{role.id}", role.role_name %></li>
    <% end %>

   </ul>
   <% end %>
  </li>

 </ul>
 <% end %>
</fieldset>

我将 is_checked 属性(对于当前贡献者)传递给 check_box 助手。这是正确执行此操作的正确方法吗?生成的标记如下所示:
<ul class="clearfix permission-row">
    <li class="first">
     <input type="hidden" value="0" name="project[contributors[9]][is_active]"><input type="checkbox" value="1" name="project[contributors[9]][is_active]" id="project_contributors_9__is_active"><label for="9">Bill Hatch</label>

    </li>
     <li><input type="radio" value="1" name="project[contributors[9]][role_id]" id="9-1" style="display: none;"><label for="9-1_Reviewer" style="display: none;">Reviewer</label></li>
     <li><input type="radio" value="2" name="project[contributors[9]][role_id]" id="9-2" style="display: none;"><label for="9-2_Tech. Reviewer" style="display: none;">Tech. reviewer</label></li>
     <li><input type="radio" value="3" name="project[contributors[9]][role_id]" id="9-3" style="display: none;"><label for="9-3_Contributor" style="display: none;">Contributor</label></li>

   </ul>

复选框的值应该是 1,所以我有点困惑为什么它没有显示为选中状态。就像我说的,我确定我只是遗漏了一些明显的东西;这不可能这么难;-)

最佳答案

这种形式有一些问题。

首先,为什么不使用rails来为你做迭代呢?其次,html id 不能以数字开头。这种方法应该注意正确填充值,因为您使用的是表单构建器而不是手动插入值。

<%= form_for @project, :url => update_permissions_project_path(@project) do |f|
  <fieldset>

  <%= f.fields_for :contributors do |c| %>
    <ul id="PermissionsList" class="permissions-grid in-line clearfix full">
      <li>
        <ul class = "clearfix permission-row">

          <li class="first">
            <%= c.check_box :is_active %>
            <%= c.label :is_active, c.object.user.whole_name %>
          </li>

          <% @roles.each do |role| %>
            <li>
              <%= c.radio_button :role_id %>
              <%= c.label :role_id, role.role_name %>
            </li>
          <% end %>

        </ul>
      </li>
    </ul>
  <% end %>

  </fieldset>
<% end %>

关于ruby-on-rails - 如何确保根据事件记录对象属性最初检查 rails f.check_box(不是 check_box_tag)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4140290/

相关文章:

mysql - Gem 允许使用分片 mysql 数据库访问数据,同时保持 Activerecord 的使用

mysql - 在 Rails 中迭代执行结果的结果

ruby-on-rails - has_many 通过大小验证

ruby-on-rails - 范围的倒数

ruby-on-rails - 在为名为 “Whenever” 的 rails cron 设置环境变量后,我应该在哪里检查?

ruby-on-rails - 如何将 Ruby on Rails 模型转换为 .json 文件?

ruby-on-rails - Rails Active_Admin VS。我自己的后端

javascript - Rails 4 - 从 ajax 更新表单中的值或数据属性并在 if 语句中使用此更新的值

ruby-on-rails - Rails 密码登录

html - Bootstrap 导航栏下拉按钮事件颜色的问题