【问题标题】:Unable to run LOOPS within Javascript Ruby on Rails View无法在 Javascript Ruby on Rails 视图中运行 LOOPS
【发布时间】:2015-06-01 02:01:21
【问题描述】:

执行摘要

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

  2. 问题:我无法在我的 _error.js.erb 文件中运行 ruby​​ 循环。这个循环的目标是提供直接输出到一个 $("#error_explanation") id 关于所有的

  3. 我能够运行各种其他 jquery 命令,如下所示。

  4. 我能够利用 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


【解决方案1】:

试试看,

$("#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 %>");

【讨论】:

  • 这是在视图中创建局部变量的方法吗?
  • ActionView::Template::Error(没有将数组隐式转换为字符串)?
  • 我已经编辑了答案,如果你仍然卡在这个,你可以检查一下。
  • 为什么多了一个');
  • 抱歉输入错误
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2016-12-05
相关资源
最近更新 更多