これはかなり簡単です。あなたのためにこれをやっているものがたくさんあります(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%>
これは私と一緒に働きました。しかし、注意してください!ユーザーが同じフォームを持つさまざまなウィンドウを持つ場合には、セッション変数に同時にアクセスできるため、これは確実に中断されます。
私はこれもいくつかのオートコンプリートを行っているため、欠落している部分がありますが、これが大きなアイデアを得るのに役立つことを願っています。
ええ、それは私が現在やっていることです。それはうまくいくと思われます、私はちょうど私が部分的にそれを戻す方法を考え出すことができたらいいですね。コントローラーでヘルパーメソッドを使用するための適切な構文は、(私が可能ならば)直感的ではありません。ありがとう。 –