ライトボックスに表示される送信フォームがあります。私はフォームをかなり厳密に検証しますが、プレイリストがすでに送信されている状況があります。その場合、フォームが送信される前にわかりません。
現在私は持っています:disable_with => 'Submitting...'
エラーがフォームに返送され、送信ボタンが再度有効になると、完全にすばらしいでしょう。
これはあまり複雑にすることなく可能でしょうか?
また、2つ目の関連する質問があります...私のフォームはライトボックスにあるため、コードは実際にはインデックスページにあります(私のアプリはほとんど1ページです)。これは、実際には「新しい」アクションがないことを意味しますが@playlist = Playlist.new(:title => ...)
、インデックスアクションには(などとともに@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