Ruby on rails 从键值对获取键名
我在Ruby 2.0上运行Rails 4 我试图用我在模型中设置的键值对数组填充select标记。然而,我很难弄清楚如何抓住钥匙。以下是我到目前为止的情况: 型号Ruby on rails 从键值对获取键名,ruby-on-rails,ruby,Ruby On Rails,Ruby,我在Ruby 2.0上运行Rails 4 我试图用我在模型中设置的键值对数组填充select标记。然而,我很难弄清楚如何抓住钥匙。以下是我到目前为止的情况: 型号 class Store Colors = ['blue', 'green', 'red', 'yellow', 'orange', 'pink', 'purple', 'lime', 'magenta', 'teal'] SearchParams = {'isbn' => 'ISBN', 'intitle' =&
class Store
Colors = ['blue', 'green', 'red', 'yellow', 'orange', 'pink', 'purple', 'lime', 'magenta', 'teal']
SearchParams = {'isbn' => 'ISBN', 'intitle' => 'Title', 'inauthor' => 'Author', 'inpublisher' => 'Publisher', 'subject' => 'Subject', 'lccn' => 'LCCN', 'oclc' => 'OCLC'}
end
控制器
def index
@search_params = Store::SearchParams.map { |param| [param, param.key] }
end
注意:我知道.key
不存在-我补充说希望它能更好地传达我正在尝试做的事情
查看
<%= form_tag do %>
<%= select_tag :param_name, @search_params, prompt: 'choose' %>
<% end %>
我希望每个
的值都是键,用户可以看到值。我希望这是有道理的。我认为,这本身就行
def索引
@search_params=Store::SearchParams.to_a
//它将返回所需的数组,但值将为[[key1,value1],[key2,value2]]
//如果要反转itm,则Store::SearchParams.to_a.collect{{arr{arr.reverse}将给出
结束我想,这本身就行 def索引 @search_params=Store::SearchParams.to_a //它将返回所需的数组,但值将为[[key1,value1],[key2,value2]] //如果要反转itm,则Store::SearchParams.to_a.collect{{arr{arr.reverse}将给出 结束这项工作:
def index
@search_params = Store::SearchParams.map { |key, val| [val, key] }
end
<强> uPD>强>:同时考虑<代码>散列→倒置< /代码>(由于@μ太短)
,即:def index
@search_params = Store::SearchParams.map { |key, val| [val, key] }
end
<强> UPD:也考虑<代码>散列→反转/<代码>(由于@μ太短)
您通常用来提供选项。方便的是,您可以将一个哈希值交给options\u进行选择,这样做是正确的:
选择的选项(容器,已选择=nil)
接受容器(散列、数组、可枚举、您的类型)并返回一个选项标记字符串。[……]
问题在于,select的options\u希望散列的键是人类看到的,而值是
的值属性。您的哈希是向后的,但您可以使用来翻转键和值:
反转→ 新的\u散列
返回通过使用hsh
的值作为键以及键作为值创建的新哈希
因此,您可以在控制器中执行此操作:
@search_params = Store::SearchParams.invert
然后在雇员再培训局:
<%= select_tag :param_name, options_for_select(@search_params), prompt: 'choose' %>
通常用于为提供选项。方便的是,您可以将一个哈希值交给options\u进行选择,这样做是正确的:
选择的选项(容器,已选择=nil)
接受容器(散列、数组、可枚举、您的类型)并返回一个选项标记字符串。[……]
问题在于,select的options\u希望散列的键是人类看到的,而值是
的值属性。您的哈希是向后的,但您可以使用来翻转键和值:
反转→ 新的\u散列
返回通过使用hsh
的值作为键以及键作为值创建的新哈希
因此,您可以在控制器中执行此操作:
@search_params = Store::SearchParams.invert
然后在雇员再培训局:
<%= select_tag :param_name, options_for_select(@search_params), prompt: 'choose' %>