【问题标题】:How to pass variable from javascript to view in rails?如何将变量从javascript传递到rails中查看?
【发布时间】:2020-07-01 10:07:07
【问题描述】:

当我点击 提交 按钮时,我在控制器中使用 json 进行渲染。

我的 json 是 {notes: array[1], array[2]}。现在我正在渲染view.html.erb file。 我想在这个文件中显示<%= notes %>等注释中的值,如何显示?

【问题讨论】:

  • 通过数组的循环怎么样。 js 文件并使用 .appendChild() 在 html.erb 中添加值?
  • 您显示的 json 是无效的 json 语法。另请注意,json 位于客户端的 javascript 中,而您的控制器位于服务器端。正如@bad_kotya 指出的那样,您不需要将数据发送到服务器端,只需要将其呈现回客户端。您可以使用 javascript 直接在 DOM 中呈现数据。

标签: javascript ruby-on-rails ruby


【解决方案1】:

如果notes 是一个数组,您可以遍历它并在您的.erb.html 文件中显示内容,如下所示:

<div>
  <% notes.each_with_index do | note, index | %>
    <div id="title">
      <%= note[:title] %>
    </div>
  <% end %>
</div>

【讨论】:

  • 它是这样显示的undefined local variable or method notes
  • @SNandy 您的.html.erb 文件是否可以访问笔记?
  • 这是我的问题。如何将json值notes传递给html.erb
  • notes 变量在 JS (.js) 文件中还是在 ruby​​ (.rb) 文件中?如果它是 ruby​​ 文件,您可以按照@Viktor 的建议进行操作,在您的控制器中创建一个实例变量并在您的视图中使用它。
  • 我将控制器作为render json: { notes: @notes } 给出,所以在我的 js 文件中,在成功部分,我得到了注释值。
【解决方案2】:

听起来您将 JSON 请求与 HTML 请求混淆了。

传入的请求应该是 HTML

控制器

# GET /the_controller/view
# not /the_controller/view.json <- wrong
def view
   @notes = array
end    

view.html.erb

<%= @notes %>

请参阅@rishabh0211 答案以获得更好的演示文稿

如果您确实希望这是一个 json 请求,通过 som ajax 请求或类似请求,您需要在您的问题中指定。

【讨论】:

    猜你喜欢
    • 2013-10-04
    • 1970-01-01
    • 2016-02-16
    • 2017-10-23
    • 2011-04-02
    • 2010-11-02
    • 2021-12-30
    • 2015-02-03
    • 1970-01-01
    相关资源
    最近更新 更多