これは私の悪夢であり、私は助けてくれる人に腕と眼球を与えてくれるでしょう:P私はこれをできるだけよく説明します。many_to_mails in rails
ユーザは「プロファイル」を編集すると、ネストされた属性フィールドにあるスキルを入力できます(「別のスキルを追加」をクリックすると、別のスキルを追加できます)。入力が始まると、jquery-autocompleteが入ります。オートコンプリートから項目を選択する必要があります。彼らは、例えば、3つの技能を保存すると、我々はこれを取得:
表:今skills
+-----------+----------------+
| user_id | skill |
+-----------+----------------+
| 4 | Photoshop |
+-----------+----------------+
| 4 | Illustrator |
+-----------+----------------+
| 4 | InDesign |
+-----------+----------------+
を、私は何をしたい、実際のスキル名が格納されていません。代わりに、skills_vocabulary
list(jquery-autocompleteが使用するもの)のスキルのIDを格納したいと思います。
テーブル:skills_vocabulary
+------+----------------+
| id | skill |
+------+----------------+
| 1 | Illustrator |
+------+----------------+
| 2 | Dreamweaver |
+------+----------------+
| 3 | After Effects |
+------+----------------+
| 4 | InDesign |
+------+----------------+
| 5 | Photoshop |
+------+----------------+
| 6 | Flash |
+------+----------------+
したがって、skills
表は次のようになります。
+-----------+----------------+
| user_id | skill_id |
+-----------+----------------+
| 4 | 5 |
+-----------+----------------+
| 4 | 1 |
+-----------+----------------+
| 4 | 4 |
+-----------+----------------+
すべてのヘルプは非常に、非常に、非常に高く評価されるだろう。私は恥ずかしい3ヶ月間これと戦争してきた。
ありがとうございます。
EDIT/
<%= f.fields_for :skills do |builder| %>
<%= render "skills_fields", :f => builder %>
<% end %>
<p><%= link_to_add_fields "Add a Skill", f, :skills %></p>
_skills_fields.html.erb
<div class="fields ac skills">
<div class="clearfix">
<span class="left"><%=f.autocomplete_field :name, users_autocomplete_skills_vocab_name_path, :class => 'restricted_to_autocomplete' %></span><span class="remove_link left"><%= link_to_remove_fields "[x]", f %></span>
</div>
</div>
EDIT 2/
今それはちょうど
skill.rb
class Skill < ActiveRecord::Base
belongs_to :user
end
です
user.rb
class User < ActiveRecord::Base
has_many :tskills, :dependent => :destroy
accepts_nested_attributes_for :tskills, :allow_destroy => true, :reject_if => lambda { |a| a[:name].blank? }
end
skills_vocabulary。表中のRB
class SkillsVocabulary < ActiveRecord::Base
end
私のコントローラのコードの基本的な指標、ショー、新しい、作成、更新、
スキルのリストを破壊する(約10,000アイテムの長)があるさskills_vocabularies
http://loopj.com/jquery-tokeninput/を使用することをお勧めします。それのためのrailscastもある:http://railscasts.com/episodes/258-token-fields。もしそうでなければ、https://github.com/crowdint/rails3-jquery-autocompleteのコードを見て、物事を変えることを始めましょう。 – rubish
スキルを追加するには、SOの質問(http://stackoverflow.com/questions/6727183)も参照してください。ユーザーが何度もクリックして新しいスキルを追加するよりもスマートです – rubish
@Rubish私は実際に現在rails3-jquery-autocompleteを使用しています - オートコンプリートではないものを追加してデータベースに自動ロードさせることにします。それは、私を悩ませているボキャブテーブルを参照しているだけです。 – stewart715