0

前提条件として相互に関連するスキルのデータベースがあります。スキルのインデックスで、他のスキルを検索して、前提条件として 1 つ以上追加できるようにしたいと考えています。ユーザーが前提条件を追加できるようにし、前提条件を削除できないようにしたいことに注意することが重要です。これは、上下投票システムによって処理されるためです。私は JQuery Tokeninput を使用していますが、実際には 1 つのことを除いてすべてが機能しています。送信時に特定のスキルのすべての前提条件を置き換えるのではなく、前提条件のみを追加する方法がわかりません。

モデル:

class Skill < ActiveRecord::Base
  attr_accessible :skill_relationship_attributes, :prereq_tokens      

  has_many :skill_relationships
  has_many :prereqs, :through => :skill_relationships
  has_many :inverse_skill_relationships, :class_name => 'SkillRelationship', :foreign_key => "prereq_id"
  has_many :inverse_prereqs, :through => :inverse_skill_relationships, :source => :skill

  attr_reader :prereq_tokens

  accepts_nested_attributes_for :skill_relationships, :allow_destroy => true

  def prereq_tokens=(ids)
    self.prereq_ids = ids.split(",")
  end
end

class SkillRelationship < ActiveRecord::Base
  attr_accessible :skill_id, :prereq_id, :skill_attributes, :prereq_attributes

  belongs_to :skill
  belongs_to :prereq, :class_name => 'Skill'
end

Jクエリ

$('#skill_prereq_tokens').tokenInput('/skills.json',
  { theme:'facebook',
    propertyToSearch:'title',
    queryParam:'search',
    preventDuplicates:'true'
  });

ビュー:

<%= simple_form_for skill do |f| %>
  <%= f.input :prereq_tokens %>
  <%= f.submit %>
<% end %>
4

1 に答える 1

0

以前にこれを取得できなかったのは少しばかげているように感じますが、スキル モデルで prereq_tokens が prereq_ids になる方法を変更することで問題を解決しました。

私はこれを変更しました:

def prereq_tokens=(ids)
  self.prereq_ids = ids.split(",")
end

これに:

def prereq_tokens=(ids)
  self.prereq_ids += ids.split(",")
end

それでおしまい。等号の前の小さなプラス記号。これが、休憩なしでコードを書きすぎる人に役立つことを願っています!

于 2012-12-27T19:20:09.620 に答える