0

そのため、Railsアプリで、自分のページの1つにあるエラーメッセージを修正しました。プロセスは(誰もが理解できるように)最初でした。私の「編集」では、最後link_toに追加:remote => trueして、ajaxリクエストを送信させました。format.js次に、respond_to do |format|ブロックに行を追加しました。次に、次のコード行を使用してedit.js.erbファイルを作成しました。このファイルは、$('#error').html("<%= flash[:error] %>"); 基本的に現在のページのエラーdivを検出し、そのdivのhtmlをエラーフラッシュメッセージに置き換えます。これはかっこいいですよね?エラーが発生した場合に、煩わしいページが更新されることはもうありません。

質問は、すべての編集ページと破棄ページに対してこれを実行したいのですが、ビューフォルダーごとにedit.js.erbファイルとdestroy.js.erbファイルを作成せずにどうすればよいでしょうか。とてもシンプルに見えます、そして多分私は疲れ果てているので明白な答えを逃しているだけです、しかし私はそれを理解することができません...だから...助けて?????

編集!

これは私の編集コントローラーです

def edit
user = User.find(session[:id])
@table = Table.find(params[:id])



if user.id != @table.created_by

  flash[:error] = "ERROR"
  respond_to do |format|
    format.js {render :template => 'shared/show_error'}
    format.html
  end
else
  flash[:error] = ""
  respond_to do |format|
    format.js {render :template => 'table/edit', :formats => :html}
    format.html
  end

end
end

問題は、エラーの表示には問題なく機能しますが、エラーがない場合は編集ページをレンダリングしません...サーバーウィンドウでは表示されますが、実際には画面に表示されません...何かアイデアはありますか?

4

2 に答える 2

2

次に、次のような一般的なJS.erbファイルを作成することをお勧めします。

# app/views/shared/show_errors.js.erb
('#error').html("<%= flash[:error] %>");

次に、コントローラーアクションで、または別のJS.erbファイルから、次のように入力します。

render :template => "shared/show_errors"

そして出来上がり!

于 2012-10-26T16:09:04.743 に答える
0

私は実際に偶然に自分の問題を修正しました...私はブロック{render :template => 'table/edit', :formats => :html}からラインを削除しました。else

于 2012-10-29T15:48:38.513 に答える