1

我有一个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?

4

0 回答 0