0

Project と Language の 2 つのモデル間の関係を削除したいと考えています。これら 2 つのモデルは、追加のパラメーター (is_default など) も格納するリンク テーブルを介してリンクされます。

私のモデルは

class Project < ActiveRecord::Base
    has_many :links
    has_many :languages, :through => :links
    # ...
end
class Link < ActiveRecord::Base
    belongs_to :project
    belongs_to :language
end
class Language < ActiveRecord::Base
    has_many :links
    has_many :projects, :through => :links
    # ...
end

私はプロジェクトコントローラでこれを試しました:

 # Removes a languages associated to a project (links table)
  def remove_language
    lang = current_project.links.where("language_id = ?", params[:id])
    current_project.links.delete(lang) if lang

    redirect_to project_path(current_project), notice: 'Language has been removed from project.' 
  end

しかし、次のエラーが表示されます。

ActiveRecord::UnknownPrimaryKey in ProjectsController#remove_language
Unknown primary key for table links in model Link.

私のroutes.rbには含まれています

resources :projects
match 'projects/remove_language/:id' => 'projects#remove_language'
match 'projects/add_language/:id' => 'projects#add_language'

私はこれで私のコントローラを呼び出します:

link_to "Remove", :controller => :projects, :action => :remove_language, :id => a.id
4

1 に答える 1

0

これを試して:

link = current_project.links.find_by_language_id(params[:id])
link.destroy
于 2012-12-20T15:24:17.037 に答える