执行摘要
-
问题1:当渲染可以访问控制器中的实例对象时,为渲染提供局部变量的价值是什么?
-
问题:我不能在我的_error.js中运行ruby循环。erb文件。这个循环的目的是为$("# error_explain ") id提供关于
的所有直接输出。 我能够运行如下所示的各种其他jquery命令。
我能够直接运行JQUERY命令利用ruby
亲爱的朋友们,
在我的create controller中,它包含如下内容:
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");
Try with,
$("#error_explanation").append("<%= j(post.errors.full_messages.each{|msg| msg }) %>")
或
<%- str = "" %>
<% if post.errors %>
<% post.errors.full_messages.each do |error| %>
<% str+= error %>
<% end %>
<% end %>
$("#error_explanation").append("<%= j str %>");