1

show.html.erb有人知道Rails中初始对象和 对象之间的区别index.html.erb吗?我问的原因是因为我正在使用 javascript 库 d3.js,为此我需要一个 json 对象。总之index.html.erb,我可以通过调用来创建它们:
<% @commits.to_json %>但是如果我尝试在任何show.html.erb浏览器中使用该语句,浏览器会告诉我结果只是一个对象(似乎不是 json),所以我以后不能调用forEach(我需要打电话)。

提前致谢!

好的,为了更好地理解,我附加了更多代码:

<%= javascript_tag do %>

d3.json('<% @commit.jobs.to_json %>', 
            function(data){


      var margin = {top: 20, right: 80, bottom: 30, left: 50},
          width = 960 - margin.left - margin.right,
          height = 500 - margin.top - margin.bottom;

      var format = d3.time.format("%Y-%m-%dT%H:%M:%SZ");

      //parse time format correct
      data.forEach(function(d) {
          console.log(d.finished_at);
          d.finished_at = format.parse(d.finished_at);
          console.log(d.finished_at);
        });

   //more code!     


<% end %>

问题是,我有一个提交对象,show.html.erb其中有所属的工作,现在我想用d3.js. 我测试了这是否:@commit.jobs.to_json创建了一个有效的 json 并且确实如此!但是控制台抛出错误:Uncaught TypeError: Object #<Object> has no method 'forEach'

我究竟做错了什么?

4

1 回答 1

3

在表演中,您通常只有一个@commit要展示的。

在索引中,您通常将 all@commits作为对象数组。

def index
   @commits = Commit.all # all
end

def show
   @commit = Commit.find(params[:id]) # only one
end

show.html.erb如果你想要do中的所有提交<%= Commit.all.to_json %>

因此,根据它们所在的视图,对象之间在技术上没有区别。它们只是根据调用视图之前在方法中的初始化方式表示不同的 ( @commit, ) 事物。@commits

于 2012-12-04T22:31:25.853 回答