无法在Javascript Ruby on Rails视图中运行LOOPS



执行摘要

  1. 问题1:当渲染可以访问控制器中的实例对象时,为渲染提供局部变量的价值是什么?

  2. 问题:我不能在我的_error.js中运行ruby循环。erb文件。这个循环的目的是为$("# error_explain ") id提供关于

  3. 的所有直接输出。
  4. 我能够运行如下所示的各种其他jquery命令。

  5. 我能够直接运行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 %>");

最新更新