これはかなり簡単です。あなたのためにこれを行うものがたくさんあります(jqueryをチェックしてください)。
少し前に何かを手作業でコーディングしました (コードの書き方が悪くて申し訳ありません)。プレイリストからトラックを追加および削除します
コントローラ:
def add_track
unless session[:admin_playlist_tracks].include?(params[:recording_id])
session[:admin_playlist_tracks] << params[:recording_id]
end
render :partial => "all_tracks"
end
def remove_track
session[:admin_playlist_tracks].delete_if {|x| x.to_s == params[:recording_id].to_s }
render :partial => "all_tracks"
end
容器:
<div id="artist_recordings" class="autocomplete_search"></div>
追加のもの:
<%= link_to_remote "Add",
:url => {:controller => :playlists, :action => :add_track, :recording_id => recording.id},
:update =>"all_tracks",
:complete => visual_effect(:highlight, 'all_tracks') %>
ものの表示/削除:
<%session[:admin_playlist_tracks].each do |recording_id|%>
<div style="margin-bottom:4px;">
[<%=link_to_remote "Remove",
:url => {:controller => :playlists, :action => :remove_track, :recording_id => recording_id},
:update =>"all_tracks"%>]
<%recording = Recording.find_by_id(recording_id)%>
<%=recording.song.title%> <br />
by <%=recording.artist.full_name%> (<%=recording.release_year%>)
</div>
<%end%>
セッション変数を使用できるため、これでうまくいきました。しかし、注意してください!ユーザーが同じフォームでさまざまなウィンドウを持つ場合、セッション変数に同時アクセスがあるため、これは確実に壊れます。
これについてもオートコンプリートを行っているため、不足している部分がいくつかありますが、これが大きなアイデアを得るのに役立つことを願っています.