1

show.html.erbRailsのイニシャルのオブジェクトと?の違いを知っている人はいindex.html.erbますか?私が尋ねている理由は、私がjavascriptライブラリd3.jsを使用していて、そのためにjson-objectが必要だからです。全体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、あなたが見せているのは 1 つだけです。

index では、通常、すべて@commitsをオブジェクトの配列として持っています。

def index
   @commits = Commit.all # all
end

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

show.html.erbdoですべてのコミットが必要な場合<%= Commit.all.to_json %>

したがって、オブジェクトが存在するビューに基づいて、オブジェクト間に技術的な違いはありません。ビューを呼び出す前にメソッドで初期化された方法に基づいて、異なる ( @commit, ) ことを意味するだけです。@commits

于 2012-12-04T22:31:25.853 に答える