Ruby on rails Rails 3有多个通过复选框的表单';不起作用
这件事我已经坚持了一天了。我听过所有关于Rails能够处理这样简单的复杂问题的讨论(尽管这不是/不应该是复杂的) 故事:用户可以拥有许多高级学位。我希望能够创建这个关联使用一个有很多通过关系和使用复选框在我的看法 型号: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 =>
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区域
结束
您是如何解决的?您是如何解决的?