2011-08-05 13 views
2

xml生成のためにビルダーファイルに変数を渡す際に問題が発生していますが、私はこの問題に完全に間違っているかもしれないと考えていますが、現在の試みはにローカル変数を渡す:

です
<% @x = [1000, 2000, 3000] %> 
<%str_xml = render :file=>"filepath/file", :locals=>{:x => x} %> 

そしてfile.builderの内側に私はXにアクセスしようとするが、私は

xml.dataset(:seriesName => 'Bogus') do 
    for element in x 
    xml.set(:value=>element) 
    end 
end 
としてビルダーでそれにアクセスしよう

undefined local variable or method `x' 

を得続けます

私はx変数にアクセスしようとしない限り、コードは正常に動作します。最終的にxはタイムスタンプに変換される2つの日付になり、表示するデータの時間範囲を決定するためにデータベースクエリで使用されるxmlビルダーに渡されます。私はレールが非常に緑色なので、私はアイデアに逆らってアプローチしているという考えに完全にオープンです。すべての助けをいただければ幸いです! @Devinは 'X' でなければなりません '@x' をコメントしたよう

はあなた

+2

てみ ':地元の人々=> {:X => @x}' –

+0

はまだ同じエラーを取得し、私はxの宣言に@を削除する場合( '<%@ X =' は 'に行くが、 <%x = ')私は'あなたがそれを期待していないときに無限のオブジェクトを持っています! 'エラーメッセージは、少なくともxが渡されているというオブジェクトがあることを認識してから正しい方向に進んでいると思います –

答えて

2

ありがとうございます。また、ビューに変数を設定しないことをお勧めします。コントローラの対応するメソッドに設定されたデータを表示するために変数を使用してみてください(できるだけデータを変更するアクションがあればモデルの一部になります)。

# app/controllers/my_controller.rb 

class MyController < ApplicationController 
    def index 
    @x = [Date.new(2010, 8, 5).to_time.to_i, DateTime.new(2011, 8, 5).to_time.to_i] 
    end 
end 

# app/views/my/index.erb 

<%str_xml = render :file=>"filepath/file", :locals=>{:x => @x} %> 
+0

デビンMと1つの注意書きに答えて答えを受け入れる: x 'の要素は' @xの要素 'になります。助けてくれてありがとう:)フォローアップとして、ローカル変数として設定しないと、タイムスタンプを表示することをどのようにお勧めしますか? –

+0

私の答えがコントローラで表示されるように更新されました。インデックスメソッドに設定されたインスタンスのvar(「@」で始まる)はすべて、対応するビューで使用可能になります – kreek