我有一个用户模型可以通过一个丰富的连接表有很多假期..我的视图中的我的destroy语句是从假期表中删除而不是user_holidays表,因为它应该..见下文:
class HolidaysController < ApplicationController
def destroy
@user = User.find(params[:user_id])
@user_holiday = @user.holidays.find(params[:id])
@user_holiday.destroy
redirect_to @user
end
end
继承人视图按钮:
<% @user.holidays.each do |hld| %>
<td><%= hld.name %></td>
<td><%= hld.date %></td>
<td>
<%= button_to('Destroy', user_holiday_path(@user, hld), :method => 'delete', :class => 'btn btn-large btn-primary') %>
型号:
class User < ActiveRecord::Base
has_many :user_holidays
has_many :holidays, :through => :user_holidays
class UserHoliday < ActiveRecord::Base
attr_accessible :holiday_id, :user_id
belongs_to :user
belongs_to :holiday
class Holiday < ActiveRecord::Base
attr_accessible :name, :date
has_many :user_holidays
has_many :users, :through => :user_holidays
有什么想法吗?感谢!!!!
答案 0 :(得分:1)
您应该使用@user.user_holidays
代替@user.holidays
@user_holiday = @user.user_holidays.where(holiday_id: params[:id])
答案 1 :(得分:0)
(我的错误没有正确地解读你的问题)
@user = User.find(params[:user_id])
@user.holidays.delete(@user.holidays.find(params[:id]))