我试图让轨道将目录的内容推送到Haml(作为字符串数组)并将它们呈现为链接文件名作为链接文本,但无法弄清楚如何传递多个实例变量到我的Haml文件。 这里是我的控制器代码:将多个变量传递给Rails中的Haml文件?
class FilesController < ApplicationController
def index
@dir = Dir.new('/Users/userName/Code/RailsTest/public/');
@files = Dir::entries('/Users/userName/Code/RailsTest/public/');
@fileNames = @files;
for file in @files
file = @dir.path + '/' + file
end
respond_to do |format|
format.html # index.html.haml
#format.xml { render :locals {:files => @files, :fileNames: @fileNames} }
format.xml { render :xml => @files }
end
end
end
和我Haml的文件:
%h1 Files
%p This will eventually list the files in our upload directory
- @files.each do |file|
%a(href=file) file
感谢能给予任何帮助!
编辑: 我控制器的方法现在包含
@dir = Dir.new('/Users/chronon/DEsktop/RailsNexus/public');
@files = Dir::entries('/Users/chronon/DEsktop/RailsNexus/public');
@fileNames = @files;
@files.map! do |file|
{:path => "#{@dir.path}/#{file}", :filename => file}
end
respond_to do |format|
format.htm
end
而且两者index.html.haml和_file_link.html.haml如nzifnab建议。 不过,现在我得到“。不能符号转换成整数”错误在我_file_link文件
两个HAML文件的内容是
%h1 Files
%p This will eventually list the files in our upload directory
= render :partial => 'files/file_link', :collection => @files, :as => :file
= link_to(:file[:path], :file[:filename])
(我不得不改变‘文件’到‘:文件’为使正常工作基于该电源轨的导游)
它的工作原理,除了在我的index.html.haml文件中的“未定义的局部变量或方法'文件'”的错误。我用更好的描述更新了我的问题。非常感谢! – Tim 2011-03-08 23:19:07
@Tim我编辑了我的答案,以反映你自己的编辑。让我知道这是否有帮助,或者如果你需要澄清。最好你理解*为什么*有些东西在起作用,而不是仅仅复制粘贴代码并说“我已经完成了” – nzifnab 2011-03-09 00:59:17
完美的工作,我相信我明白了为什么以及我以前出错的地方。谢谢! – Tim 2011-03-09 16:40:37