【问题标题】:rails 4 -- working with js format from ajaxrails 4 -- 使用 ajax 的 js 格式
【发布时间】:2014-06-11 04:27:06
【问题描述】:

我仍在学习 Rails,并且我有一个包含团队信息的页面,该页面将根据团队的图标单击进行更新,这会触发对控制器的 ajax 调用以填充一些选项卡。

我已经阅读了一些 good info 的内容,了解如何在控制器中使用 format.js 来渲染来自 js.coffeejs.erb 文件的部分内容。

我遇到的问题是coffeescript 我认为。现在,我从控制器获取了一些名为 @schedules 的数据,并将其传递给 schedule.js.coffee 文件,应该为返回的每条记录填充一个部分并将其附加到表中。

// schedule.js.coffee
$.each @schedules, (schedule) ->
    ($ '#schedule_data').append("<%= j render(partial: 'schedules/schedule', locals: { s: schedule }) %>")

这会引发错误

`> undefined local variable or method `schedule' for #<#<Class:0x007fe535cd2900>:0x007fe535d32a30>`

我尝试简化咖啡脚本以仅记录输出:

$.each @schedules, (schedule) ->
    console.log(schedule)

但这不会打印任何内容。

我错过了什么吗?我对咖啡脚本非常缺乏经验,但似乎我应该得到一些数据——我验证了这个团队项目的日程安排项目确实存在。

【问题讨论】:

  • 请发布您的相关控制器代码和部分文件。
  • 我不认为你打算在咖啡脚本中使用 rails 变量,所以 $.each @schedules 对我来说似乎是错误的......
  • 尝试一个简单的 console.log 或一条警告语句,在你的咖啡文件中没有任何循环
  • 我认为@RubyRacer 是对的,您正在将您的coffeescript 与您调用$.each 的红宝石混合...如果您这样做$.each &lt;%= j @schedules %&gt;, (schedule) -&gt; 等会怎样?我怀疑它会做你想要的,但你应该得到一些东西......

标签: ruby-on-rails ajax ruby-on-rails-4 coffeescript


【解决方案1】:

ERB

除了RubyRacer 的评论,这里最需要注意的是在你的JS 中使用Rails 代码。尽管在系统后端处理.js.coffee.js.erb 文件确实 允许使用Rails 代码,但它必须遵循与html.erb 中相同的语法(相同的预处理器) ):

 // schedule.js.coffee
<% @schedules.each do |schedule| %>
    $('#schedule_data').append("<%= j render(partial: 'schedules/schedule', locals: { s: schedule }) %>")
<% end %>

错误

一个更奇怪的问题是你的错误:

undefined local variable or method `offer' for #<Class:0x007fe535cd2900>:0x007fe535d32a30>

这表明您的模型内部存在问题(您在其中引用了 schedule 对象的 offer 方法)。我认为这个问题是由你之前不完整的 JS 引起的(因为你没有传递正确的数据)

如果在尝试上述修复后问题仍然存在,请发表评论,我会提供帮助!

【讨论】:

  • @RichPeck--抱歉,您注意到错误消息是正确的。我在深夜盯着问题看太久后在打印错误时使用了错误的变量名后发布。上面是固定的。
  • 非常感谢您的帮助 Rich——这确实是问题所在。我正在混合js和ruby。但是,脚本没有抛出错误,但也没有做任何事情。 Coffeescript 是否需要 document.ready 声明或类似的东西来触发它?还是应该由控制器自动调用?
  • 这是返回/编译的咖啡脚本,看起来正确但什么也没做:(function() { jQuery(function() { alert('yo'); return $('#schedule_body').append("&lt;tr&gt;\n &lt;td&gt;July 1&lt;\/td&gt;\n &lt;td&gt;Oklahoma State Cowboys&lt;\/td&gt;\n &lt;td&gt;OK City&lt;\/td&gt;\n &lt;\/tr&gt;"); }); }).call(this);
猜你喜欢
  • 1970-01-01
  • 2018-02-01
  • 2014-04-04
  • 1970-01-01
  • 2012-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多