【问题标题】:slim file is not executing the js inside itslim 文件没有执行里面的 js
【发布时间】:2012-03-25 06:16:59
【问题描述】:

我在我的 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 文件并按原样呈现。 像$("#error_msg").html(@comment.errors); 这样打印或$("#success_msg").html("updated successfully")

编辑:

我正在使用 jeditable 插件对我的文章标题进行适当的编辑。它会更新文章标题并按原样呈现 js 文件

我在这里得到的响应是 json。如何解决这个问题。提出建议

【问题讨论】:

  • 我并没有真正理解你的问题,但我会尝试猜测并建议你调试你的javascript,如this article
  • 请更明确地描述您的问题,因为我不明白您的意思。

标签: javascript ruby-on-rails-3 parsing jeditable slim-lang


【解决方案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) %>");
}

【讨论】:

  • 我收到缺少模板文章/更新,应用程序/更新与 {:locale=>[:en], :formats=>[:json], :handlers=>[:erb, :builder ,:苗条,:咖啡]}。错误我在视图/文章中添加了文件 update.js.erb/
  • 嗯,你的初始文件肯定被命名为article.js.slim 对吗?我不确定它首先会如何为 :json 请求呈现该文件。因为请求是 :json 格式,所以我想它需要一个 articles/update.json 模板。
猜你喜欢
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多