我有一个显示在灯箱中的提交表单。我对表单进行了大量验证,但在某些情况下,播放列表已经提交,在这种情况下,我无法在提交表单之前进行判断。
目前我有:disable_with => 'Submitting...'
如果错误被发送回表单,那将是非常棒的,并且提交按钮将重新启用。
如果没有太多复杂性,这可能吗?
我还有第二个相关问题......因为我的表单在灯箱中,所以它的代码实际上在索引页面上(我的应用程序几乎只有一页)。这意味着在我的索引操作中确实没有“新”操作,而是 a @playlist = Playlist.new(:title => ...)
(以及 a@playlists = Playlist.all
等)。在我的路线中,我这样做了:resources :playlists, :only => [:create]
这听起来像我做的那样吗?
编辑:这里有一些代码,虽然它基本上和你想象的一样简单。
以下类型的作品......如果播放列表有效,它会创建播放列表,否则它什么也不做。两次调用 create.js.erb .. 我现在只是不知道如何完成这项工作。成功时我需要关闭窗口,失败时我需要将错误加载到屏幕上已经存在的表单中。我不确定那会去哪里:/
before_filter :load_genres, :only =>[:index, :user]
before_filter :new_playlist, :only => [:index, :new]
def index
@playlists = Playlist.order('created_at DESC').page(params[:page]).per(30)
end
def create
@playlist = Playlist.new(params[:playlist])
respond_to do |format|
if @playlist.save
format.html { redirect_to root_path, :notice => "Playlist submitted" }
format.js {}
else
format.html { render :action => :new, :layout => !request.xhr? }
format.js {}
end
end
end
def new
end
def load_genres
@genres = Genre.order(:name)
end
def new_playlist
@playlist = Playlist.new(:title => params[:title], :url => params[:url], :description => params[:description])
end
这是我的表单中的第一个(位于 index.html.erb 中):
<%= form_for @playlist, :remote => true do |f| %>
我目前没有 html 或代码create.html.erb