0

フォームの送信後に現在のページの上に作成したパーシャルをレンダリングしようとしています。これはコントローラーの create メソッドで発生するはずですが、これが Ruby で実行できるのか、それとも Javascript を使用してレンダリングするだけなのかがわかりません。

これが私がこれまでに試したことです:

  • new.html.erb と同じフォルダーにパーシャルを作成しました (_lightbox.html.erb と呼ばれます)
  • コントローラーのレンダリングは次のように変更されました。

def create
 @user = User.new(params[:user])
  respond_to do |format|
    if @user.save
      BackgroundJob.perform_async(@user.id)
      format.html { render :partial=>"lightbox", :layout=>false}
      format.json { render json: @user, status: :created, location: @user }
    else
      format.html { render action: "new" }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

私はレンダリングを読みましたが、:partial キーを使用すると、単に新しいページにパーシャルがレンダリングされます。おそらく、フォームを :remote を使用するように変更し、ライトボックス風のコンテンツを追加して ajax を成功させる必要がありますが、レンダリング機能を備えた Ruby on Rails でこれを実行できるかどうかに興味がありました。

4

1 に答える 1

0

ここに表示されているコードは、実際には問題ではありません。それはすべてビューにあります。

フォーム URL への投稿であるフォーム送信からの既定のアクションを防止する必要があります。ブラウザーがその URL に投稿すると、応答がレンダリングされます。デフォルトのアクションを防止したら、JavaScript を使用して自分でフォームを送信し、応答を処理するコールバックを設定する必要があります。そのコールバックは、ページ内の必要な場所に html を配置する必要があります。これについて不明な点があれば、詳しく説明します。

于 2012-12-31T21:29:05.717 に答える