1

Rails 3.2 アプリケーションでインプレース編集用の gem 'jeditable-rails' を使用しています

def update
@article = Article.find(params[:id])
@article.update_attributes(params[:article])
render :layout => false if request.xhr?
end

そして私の記事/ update.js.slim

私は持っている

- unless @article.errors.empty?
  | $("#error_msg").html(@article.errors);
- else
  | $("#success_msg").html("updated successfully");

しかし、更新を行うと、更新されてjsファイルに移動し、そのままのようにレンダリングされます。like$("#error_msg").html(@comment.errors);がそのまま印刷されるか、$("#success_msg").html("updated successfully")

編集 :

記事のタイトルだけを編集するために jeditable プラグインを使用しています。記事のタイトルを更新し、jsファイルをそのままレンダリングします

ここで得た応答はjsonです。これを解決する方法。提案を与える

4

1 に答える 1

1

パイプを使用する|と、Slim レンダリング エンジンはコンテンツをテキストとして出力するように指示されます。そのため、JavaScript コードをテキストとして出力するのを文字どおり見ているのです。

この場合、ここで Slim を使用したくない、または使用する必要はないと思います。ERB を使用すれば問題ありません。articles/update.js.slimファイルをarticles/update.js.erb代わりに次のコードに置き換えてみてください。

var valid = <%= @article.errors.empty? %>;

if (valid) {
  $("#success_msg").html("updated successfully");
}
else {
  $("#error_msg").html("<%= escape_javascript(@article.errors) %>");
}
于 2012-03-26T02:57:47.990 に答える