Aar*_*mas 2 json ruby-on-rails-3 rabl
我正在尝试使用rabl从rake任务创建一个json文件.下面我有要测试的简化版本.
当我通过url查看'articles.json'或'articles/2.json'时,我得到了预期的json响应.
但是当我尝试通过rake任务运行它时,它在创建的jsonFile中的@articles总是有一个空值.它将使index.json.rabl视图呈现与@ articles.count相同的次数,但值始终为null.
那么如何将我的rake任务中创建的@articles对象传递给Rabl.render?
@feedName ||= 'default'
node(:rss) { partial('articles/rss), :object => @feedName }
node(:headlines) { partial('articles/show'), :object => @articles }
Run Code Online (Sandbox Code Playgroud)
object @article
attributes :id,:body
....
Run Code Online (Sandbox Code Playgroud)
task :breakingnews => :config do
filename = 'breakingnews.json'
jsonFile = File.new(filename)
@articles = Article.limit(10)
n = Rabl::renderer.json(@articles,'articles/index',view_paths => 'app/views')
jsonFile.puts b
jsonFile.close
Run Code Online (Sandbox Code Playgroud)
dab*_*bai 11
我遇到了类似的问题.你基本上有两个选择:
@your_object = ...
Rabl.render(@your_object, 'your_template', view_paths => 'relative/path/from/project/root', :format => :json)
Run Code Online (Sandbox Code Playgroud)
object @any_name_you_like
attributes :id,:body
....
Run Code Online (Sandbox Code Playgroud)
这将使您的模板呈现为json,并将对象指定为其实例对象(您可以将其命名为任何您想要的名称)
这有点棘手.我找到的唯一选项是在调用范围中将所需对象设置为实例变量,并为模板的呈现设置此范围(请参阅范围).
@one_object = ...
@another_object = ...
Rabl.render(nil, 'your_template', view_paths => 'relative/path/from/project/root', :format => :json, :scope => self)
Run Code Online (Sandbox Code Playgroud)
object @one_object
attributes :id,:body
node(:my_custom_node) { |m| @another_object.important_stuff }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2205 次 |
| 最近记录: |