这很容易。有很多事情可以为你做这件事(查看 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%>
这对我有用,因为我可以使用会话变量。不过要小心!在某些情况下,用户将拥有具有相同表单的多个窗口,这肯定会中断,因为会话变量会有并发访问。
由于我也在对此进行一些自动完成,所以缺少一些部分,但我希望这会帮助您获得大创意。