私は大きな問題を抱えています!
School、Secretaries、Schools_Secretaryの3つのモデルがあります。School_secretaryは結合モデルを作成し、正常に動作します。しかし、レコードを追加した後、同じものを削除することはできません。;(誰かが私を助けることができますか?
学校と秘書が削除されたことがないので、削除するdepent destroyを削除したくないので、テーブルschools_secretariesのモデルレコードに参加するだけで削除したい
Secretary.rb
class Secretary < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :schools_secretaries
has_many :schools, :through => :schools_secretaries,:uniq => true
end
School.rb
class School < ActiveRecord::Base
has_many :schools_secretaries
has_many :secretaries, :through => :schools_secretaries,:uniq => true
end
schools_secretary.rb
class SchoolsSecretary < ActiveRecord::Base
belongs_to :secretary
belongs_to :school
end
routers localhost / schools / 1 / secretaries / 1へのroutes.rb
resources :schools do
resources :schools_secretaries
resources :secretaries
devise_for :secretaries, :controllers => {:registrations => "registrations"}
終わり
show.html.erb ..アクションは正常に動作し、テーブルにレジスタを挿入できます
<%= form_for [@school,SchoolsSecretary.new], :method => :post,:remote => true do %>
<%= hidden_field_tag :school_id, @school.id %>
<%= hidden_field_tag :secretary_id, @secretary.id %>
<%= submit_tag 'Adicionar' %>
<% end %>
schools_secretaries_controller.rb
def create
@school = School.find(params[:school_id])
@secretary = Secretary.find(params[:secretary_id])
schools_secretary_params = { :school_id => @school.id, :secretary_id => @secretary.id }
@schools_secretary = SchoolsSecretary.new(schools_secretary_params)
respond_to do |format|
if @schools_secretary.save
format.html { redirect_to @schools_secretary, notice: 'Schools secretary was successfully created.' }
#format.json { render action: 'show', status: :created, location: @schools_secretary }
else
format.html { render action: 'new' }
format.json { render json: @schools_secretary.errors, status: :unprocessable_entity }
end
end
end
結合テーブルレコードを削除するには、@ schoolと@secretaryがあると仮定します。次のコードを試してください。
@school.secretaries.delete(@secretary)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加