Ruby on rails 在Rails中手动填充select_标记
我知道这看起来很疯狂,但我正试图这样做:Ruby on rails 在Rails中手动填充select_标记,ruby-on-rails,ruby,Ruby On Rails,Ruby,我知道这看起来很疯狂,但我正试图这样做: def site_list @sites = [] Dir.new(base_dir = "./app/sites/").each do |name, idx| path = "#{base_dir}#{name}" if FileTest.directory?(path) && !name.starts_with?('.') @sites << name
def site_list
@sites = []
Dir.new(base_dir = "./app/sites/").each do |name, idx|
path = "#{base_dir}#{name}"
if FileTest.directory?(path) && !name.starts_with?('.')
@sites << name
end
end
return @sites
end
class SitesController < ApplicationController
...
@sites = { :site1 => 'stackoverflow', :site2 => 'someothersite' }
...
end
只要陪我度过我的疯狂
有一个URL参数名为:site,如果存在,那么我希望手动创建一个动态下拉列表,以选择正确的元素。因此,要使其工作,我需要创建一个id>name的关联数组/哈希
逐步:
列出所有关联id的目录>名称id组成,它只是索引
根据:site URL参数,在选择列表中选择正确的元素
没有第三步。
那么您就有了:但是第三个参数作为选择的选项
希望这至少有点道理
英文描述
我正在根据文件系统中的文件夹填充数组
此数组用于填充select_标记
select_标签当前选定的项目将根据当前路线确定:地点
如果路线不包含:站点,则显示带有“请选择”的“选择”标记。。。或者类似的东西。
在select form helper中,您实际上可以传递一个散列,键将显示在select菜单中,值将是值。因此,让@sites成为散列,如下所示:
def site_list
@sites = []
Dir.new(base_dir = "./app/sites/").each do |name, idx|
path = "#{base_dir}#{name}"
if FileTest.directory?(path) && !name.starts_with?('.')
@sites << name
end
end
return @sites
end
class SitesController < ApplicationController
...
@sites = { :site1 => 'stackoverflow', :site2 => 'someothersite' }
...
end
只需更改块中的条件即可为您工作。表单中的代码看起来是这样的:我以为它在向我吐,因为它需要一个整数值,这看起来很奇怪。是的,我可以构建散列,我需要找到一种通过非DB缓存它的方法。这看起来棒极了,我会在几个小时后看一看。
class SitesController < ApplicationController
before_filter :extract_select_option, :only => :your_action
protected
def extract_select_option
# SITES - all sites readed from file
@sites = SITES.keep_if { |key, value| value == params[:site] }
end
end