我有一个habtm 模型,例如:
class Recurrence < ActiveRecord::Base
has_many :participations, :include => :user
has_many :users, :through => :participations
accepts_nested_attributes_for :participations
attr_accessible :scheduled_to, :user_id, :user_ids
end
class Participation < ActiveRecord::Base
belongs_to :recurrence
belongs_to :user
attr_accessible :recurrence_id, :user_id
end
class User < ActiveRecord::Base
has_many :participations, :dependent => :delete_all
has_many :recurrences, :through => :participations
accepts_nested_attributes_for :participations
attr_accessible :name, :email, :phone, :recurrence_ids
end
具有针对重复控制器的标准操作(索引、显示、新建、编辑、创建、更新、销毁)。
鉴于单个重复(/recurrences/10 -> show-action),我尝试创建/更新用户的参与。当我在提到的视图中执行以下操作时:
<%= form_for @recurrence do |f| %>
<div class="checkbox">
<% for user in User.find(:all) %>
<div>
<%= check_box_tag "recurrence[user_ids][]", user.id, @recurrence.users.include?(user) %>
<%= user.name %>
</div>
<% end %>
</div>
<div class="actions">
<%= f.submit "Update", :class => 'btn btn-mini btn-primary' %>
</div>
<% end %>
一切正常,我可以添加或删除一个或多个用户的参与。
但我喜欢这样做——只针对一个用户,即 current_user!我尝试使用以下来源:
<%= form_for(@recurrence) do %>
<%= check_box_tag "recurrence[user_id]", current_user.id,
@recurrence.users.include?(current_user) %>
<%= current_user.name %>
<%= submit_tag "Update" %>
<% end %>
哪个不起作用,更详细
- 更新未更改状态:不参与,不做任何事情:正确!
- 更改状态:从不参与 - 到参与,适用于 current_user,但也会删除其他用户的状态:错误!
- 改变状态:从参与到不参与,不会改变任何事情:错!
欢迎任何帮助!
最后,我想将 Check-Box 减少为 Confirm-/Refuse-Buttons with hidden-fields for the increasing ,但可能有更简单的rails-way?