Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3有多个通过复选框的表单';不起作用_Ruby On Rails_Forms_Checkbox_Has Many Through_Has Many - Fatal编程技术网

Ruby on rails Rails 3有多个通过复选框的表单';不起作用

Ruby on rails Rails 3有多个通过复选框的表单';不起作用,ruby-on-rails,forms,checkbox,has-many-through,has-many,Ruby On Rails,Forms,Checkbox,Has Many Through,Has Many,这件事我已经坚持了一天了。我听过所有关于Rails能够处理这样简单的复杂问题的讨论(尽管这不是/不应该是复杂的) 故事:用户可以拥有许多高级学位。我希望能够创建这个关联使用一个有很多通过关系和使用复选框在我的看法 型号: class User < ActiveRecord::Base has_many :user_degree_lists has_many :degrees, :through => :user_degree_lists, :source =>

这件事我已经坚持了一天了。我听过所有关于Rails能够处理这样简单的复杂问题的讨论(尽管这不是/不应该是复杂的)

故事:用户可以拥有许多高级学位。我希望能够创建这个关联使用一个有很多通过关系和使用复选框在我的看法

型号:

class User < ActiveRecord::Base
    has_many :user_degree_lists
    has_many :degrees, :through => :user_degree_lists, :source => :advanced_degree, :dependent => :destroy
end

class AdvancedDegree < ActiveRecord::Base
  attr_accessible :value, :description
  has_many :user_degree_lists
end

class UserDegreeList < ActiveRecord::Base
  belongs_to :user
  belongs_to :advanced_degree
end
class用户:user\u学位列表,:source=>:advanced\u学位,:dependent=>:destroy
结束
类AdvancedDegree
ActiveRecord:

class CreateUserDegreeLists < ActiveRecord::Migration
  def self.up
    create_table :user_degree_lists do |t|
      t.integer :user_id
      t.integer :advanced_degree_id

      t.timestamps
    end
    add_index :user_degree_lists, :user_id
    add_index :user_degree_lists, :advanced_degree_id
    add_index :user_degree_lists, [:user_id, :advanced_degree_id], :unique => true    
  end

  def self.down
    drop_table :user_degree_lists
  end
end
class CreateUserDegreeListstrue
结束
def自动关闭
下拉列表:用户列表
结束
结束
视图:

<%= form_for(@user, :html => {:autocomplete => 'off', :id => "sign_up_user" }) do |f| %>
...
   <% for advanced_degree in AdvancedDegree.find(:all)%>    
   <%= check_box_tag "user[advanced_degree_ids][]", advanced_degree.id, @user.degrees.include?       (advanced_degree.id) %>                    
   <%= f.label :advanced_degrees, advanced_degree.description %>
...
<% end %>
{:autocomplete=>'off',:id=>“注册用户”})do | f |%>
...
...
提交表单后,将更新所有用户字段,但不会创建:user\u degree\u list关系


我做错了什么?

不确定你是否已经解决了这个问题,但我发现了一件事:类用户不应该拥有“has\u many:advanced\u degrees”和“has\u many:degrees”吗?可能想在没有源代码的情况下尝试(除非你尝试的是多态性的东西),这就是我做类似事情的方式。

不确定你是否已经解决了这个问题,但我发现了一件事:类用户不应该有“has\u many:advanced\u degrees”和“has\u many:degrees”吗?可能想在没有源代码的情况下尝试(除非您尝试的是多态性的东西),我就是这样做的。

1)我会将“UserDegreeList”重命名为“UserDegree”,因为这是一个联接表

2) “AdvancedDegree.find(:all)”可以是“AdvancedDegree.all”

3) 我同意前面的评论,应该改名为“has_many:advanced_degrees”

4) 要解决此问题,请尝试将此添加到用户:

accepts_nested_attributes_for :advanced_degrees, :allow_destroy => true, :reject_if => :all_blank
1) 我会将“UserDegreeList”重命名为“UserDegree”,因为这是一个联接表

2) “AdvancedDegree.find(:all)”可以是“AdvancedDegree.all”

3) 我同意前面的评论,应该改名为“has_many:advanced_degrees”

4) 要解决此问题,请尝试将此添加到用户:

accepts_nested_attributes_for :advanced_degrees, :allow_destroy => true, :reject_if => :all_blank

您需要确保attr_accessible具有您在复选框中设置的attr

class Zone < ActiveRecord::Base

  attr_accessible :name, :active, :user_ids

  has_many :user_zones
  has_many :users, :through => :user_zones

end

class User < ActiveRecord::Base

  attr_accessible :name, :zone_ids

  has_many :user_zones
  has_many :zones, :through => :user_zones

end
类区域:用户\u区域
结束
类用户:用户\u区域
结束

您需要确保attr\u accessible具有您在复选框中设置的attr

class Zone < ActiveRecord::Base

  attr_accessible :name, :active, :user_ids

  has_many :user_zones
  has_many :users, :through => :user_zones

end

class User < ActiveRecord::Base

  attr_accessible :name, :zone_ids

  has_many :user_zones
  has_many :zones, :through => :user_zones

end
类区域:用户\u区域
结束
类用户:用户\u区域
结束

您是如何解决的?您是如何解决的?