【发布时间】:2015-06-01 02:01:21
【问题描述】:
执行摘要
问题 1:当渲染器可以访问控制器中的实例对象时,向渲染器提供局部变量的价值是什么?
问题:我无法在我的 _error.js.erb 文件中运行 ruby 循环。这个循环的目标是提供直接输出到一个 $("#error_explanation") id 关于所有的
我能够运行各种其他 jquery 命令,如下所示。
我能够利用 ruby 直接运行 JQUERY 命令。
亲爱的朋友们,
在我的创建控制器中,其中包含以下内容:
format.js { render "_error.js.erb", locals: {post: @post, errors: @post.errors.messages} }
在我的 VIEW _error.js.erb 中,我有 3 个 JQUERY 查询,其中两个有效,但第三个无效。
This Works. $("#error_explanation").append('<%= j pluralize(post.errors.count, "error") %> prohibited this secret from being saved: <p>');
This Works. $("#error_explanation").append('<%= post.errors.full_messages_for(:title) %>');
This Does NOT Work. $("#error_explanation").append('
<% post.errors.messages.each do |error| %>
<%= j error %>
<% end %>
我只能假设这是因为我的循环?我不能在我的 javascript (js.erb) 代码中执行循环吗?
导致此错误
ActionView::Template::Error (undefined method `gsub' for ["Title can't be blank", "Subject can't be blank"]:Array):
5: <% end %>
6:
7: <% if post.errors.full_messages[1] %>
8: $("#error_explanation").append('<%= j(post.errors.full_messages.each {|n| n}) %>');
9: <% end %>
10: $("#error_explanation").css("color", "red");
【问题讨论】:
-
我在想因为多行。您可以尝试在之前运行循环并将所有错误放入变量“结果”中,然后追加(结果)
-
ActionView::Template::Error (undefined method `gsub' for [:title, ["can't be blank"]]:Array):%- str = "" %> '); $("#error_explanation").append("");
标签: javascript ruby-on-rails ruby-on-rails-3