我设置了 2 个模型,如下所示:
class Sector < ActiveRecord::Base
attr_accessible :summary, :title, :sector_ids
belongs_to :platform
end
和
class Platform < ActiveRecord::Base
attr_accessible :name, :url
has_many :sectors
end
以及尝试使用此处示例的表单,如下所示:
<%= simple_form_for @platform, :html => { :class => 'form-vertical'} do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<div class="row-fluid">
<div class="span12">
<div class="span6">
<%= field_set_tag "General" do %>
<%= f.input :name %>
<%= f.input :url %>
<%= f.collection_check_boxes :sector_ids, Sector.all, :title, :title %>
<% end %>
</div>
</div>
</div>
</div>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
然而,在我尝试提交表单后,我收到以下错误:
无法批量分配受保护的属性:sector_ids
我在这里想念什么?在添加适当的关联后,我成功迁移了数据库,但似乎 Rails 不知道现在如何使用所选的扇区 ID。
解决方案 :
class Sector < ActiveRecord::Base
attr_accessible :summary, :title
belongs_to :platforms
end
和
class Platform < ActiveRecord::Base
attr_accessible :name, :url, :platform_attributes, :sector_ids
has_many :sectors
end
在视图中:
<%= f.association :sectors, :as => :check_boxes %>
当然,不要忘记运行“ rake db"migrate
”,以防你还没有完成。我还需要重新启动服务器才能应用更改。
我希望这可以帮助别人。