我有一个事件模型:
has_many :users, through: :event_users
has_many :event_users
用户模型:
has_many :events, through: :event_users
has_many :event_users
和一个EventUser模型:
belongs_to :event
belongs_to :user
在我的活动页面上,我有一个活动用户列表:
<% @event.users.each_with_index do |user, index| %>
<li>
<%= user.try(:display_name) %>
<%= link_to "delete", user, method: :delete, class: 'btn', data: { confirm: 'Are you sure?' } %>
</li>
<% end %>
单击“删除”链接时,将删除User对象,而不是EventUser。我不知道link_to中的语法应该是什么,以便引用正确的对象。
答案 0 :(得分:1)
link_to "delete", user, method: :delete
转到UsersController #delete。您需要单独的操作(或可能是控制器)来删除EventUsers。类似的东西:
EventsController
def remove_user
event = Event.find(params[:id])
event_user = event.event_users.find_by!(user_id: params[:user_id])
event_user.destroy
end
end
routes.rb中:
resources :events do
delete remove_user, on: :member, as: :remove_user
end
形式:
<% @event.users.each_with_index do |user, index| %>
<li>
<%= user.try(:display_name) %>
<%= link_to "delete", remove_user_path(@event, user_id: user.id), method: :delete, class: 'btn', data: { confirm: 'Are you sure?' } %>
</li>
<% end %>