问题 Rails - 从字符串数组中下拉


我有一个像这样的数组:

['New York', 'Los Angeles']

我希望能够以这样的形式生成带有这些值的select /选项:

<%= form_tag filter_city_path, :method=> get do %>
  <%= select_tag "city", @list_of_cities %>
<% end %>

但这不起作用。如你所见,我想把选择作为  在网址中。


2489
2018-04-24 01:35


起源



答案:


您需要使用options_for_select帮助器

<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %>

15
2018-04-24 01:45



只要有可能,请尝试以编程方式转换数组,而不是长篇拼写它们。你已经说明了为什么在第二次不利用'york'时。 cities.collect { |c| [ c, c ] } 会做扩展它的工作。 - tadman


答案:


您需要使用options_for_select帮助器

<%= select_tag "city", options_for_select([['New York' ,'New york'], ['Los Angeles', 'Los Angeles']]) %>

15
2018-04-24 01:45



只要有可能,请尝试以编程方式转换数组,而不是长篇拼写它们。你已经说明了为什么在第二次不利用'york'时。 cities.collect { |c| [ c, c ] } 会做扩展它的工作。 - tadman


我的方法是在模型中将数组构建为常量,强制确认常量中列出的选项,并从视图中调用它

class Show < ApplicationRecord

  DAYS = [ "monday", "tuesday", "wednesday", "thursday","friday", "saturday","sunday"]

  validates :day, inclusion: DAYS

end

如果您希望在没有内容的情况下提交该字段的选项,您还必须在验证中调用“allow_blank:true”。设置完成后,您可以调用常量来填充表单中的视图,如下所示:

<%= select_tag "day", options_for_select(Show::DAYS) %>

要么

<%= select_tag "day", options_for_select(Show::DAYS.sort) %>

如果你想要它预先分类(这对一周中的几天毫无意义......)


1
2017-08-16 22:16





看起来你的数组没有足够的参数。请参阅 本指南

通常需要以这种方式格式化选项:

[['Lisbon', 1], ['Madrid', 2], ...]

注意价值 12


0
2018-04-24 01:40