【问题标题】:Rails, has_many list of checkboxes--form field name?Rails,has_many 复选框列表 - 表单字段名称?
【发布时间】:2011-03-10 16:06:42
【问题描述】:

假设我有一个用户模型对象

class User < ActiveRecord::Base
  has_many :permissions
end

class Permission > ActiveRecord::Base
  attr_accessible :user_id, :permission_name

显然桌子上有一个 id,但我们确实对那一列不感兴趣。真正的主键是 user_id + permission_name。默认的foreign_key是:user_id

我们正在尝试为每个权限生成复选框,但无法循环执行...

有人可以解释一下rails是如何生成一个复选框名称的吗:

 user.permissions where permission.permission_name == "some string"

或者我们如何调用 .erb 文件中的 check_box_tag 方法,以便它可以呈现特定的复选框,比如权限名称是“ted”的位置?

此时我有点绝望了。我发现了许多假设主键是“id”字段的示例,并且我只是想遍历权限列表,但我没有看到一个减去循环并且不使用 id 作为主键的示例。

提前致谢!

编辑:我意识到在一个对许多用户有很多权限的表上,permission_name 本身作为主键是无效的,但是对于我们在新用户的情况下表单上的目的,user_id 不存在并且该用户的每种权限名称只能有一种...也许在这种情况下,我们甚至不关心primary_key?

【问题讨论】:

    标签: ruby-on-rails forms checkbox erb has-many


    【解决方案1】:

    我想你正在寻找formtastic gem

    控制器:

    @permissions = Permission.where(:permission_name => "ted")
    

    @permissions = @user.where(:permission_name => "ted")   
    

    这取决于你真正想要什么。

    查看(简化):

    <%= semantic_form_for :user, :url => some_path(@user) do |f| %>
      <%= f.input :permissions, :as => :check_boxes, :collection => @permissions %>
      <%= f.commit_button %>
    <% end %>
    

    在您的模型中,例如user.rb,需要添加:

    accepts_nested_attributes_for :projects
    

    【讨论】:

      猜你喜欢
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      相关资源
      最近更新 更多