将局部变量传递给:rails中的文件呈现方法

时间:2011-08-05 17:45:41

标签: ruby-on-rails xml render

我在将变量传递给构建器文件以进行xml生成时遇到问题,并且认为我可能正在接近完全错误的问题,但这是我当前的尝试:

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

然后在file.builder里面我尝试访问x,但继续获取

undefined local variable or method `x'

我尝试在构建器中访问它

xml.dataset(:seriesName => 'Bogus') do
  for element in x 
    xml.set(:value=>element)
  end
end

只要我不尝试访问x变量,代码就可以正常工作。最终,x将成为两个将转换为时间戳的日期,并传递给xml构建器以在数据库查询中使用,以确定要显示的数据的时间范围。我对铁轨非常环保,所以我完全乐于接受这个想法。任何和所有的帮助表示赞赏!

谢谢

1 个答案:

答案 0 :(得分:2)

正如@Devin评论'x'应为'@x'。我还建议不要在视图中设置变量,尝试使用变量来显示控制器的相应方法中的数据集(并尽可能将任何更改数据的操作作为模型的一部分)。

# 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} %>