形式轨道中两个f.select区域之间的依赖性和关系

时间:2017-07-23 02:10:16

标签: ruby-on-rails forms

如何在这两个f.select与数组之间建立依赖关系? 我想,对于每个模型,只提供某些年份,而不是全部。

<%= form_for (@car) do |f| %>
<%= f.select :model, @model, {}, {class: "form-control"} %>
<%= f.select :year, @year, {}, {class: "form-control"} %>
<%= f.submit %>
<% end %>

这是我的阵列:

@model = ['Model', 'Wrangler', 'Wrangler Unlimited',....]
@years =  [ 
  'Year', 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 
  2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000,
  1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992,
  1991, 1990, 1989, 1988, 1987
  ]

我尝试使用if / else从控制器执行此操作,但它没有工作。

@model.each { |e|
if e == @model[0]
  @year = @years[0]
elsif e == @model[1]
  @year = @year.all
else e == @model[2]
  @year = @year[1...10]
end
}

1 个答案:

答案 0 :(得分:0)

我想我明白了。

您可能想要更改年份选择提供的选项 根据所选模型。

这种情况的一个非常常见的解决方案是使用AJAX渲染依赖字段。在您的情况下,您应该在模型选择中发生change事件时更新年选项

这是一个关于此的非常教学的教程:

https://kernelgarden.wordpress.com/2014/02/26/dynamic-select-boxes-in-rails-4/

PS:我真的建议在数据库表中保留Model和Year数据。一旦您使用Active Record抽象数据和关系,这种方法将更加干净和有效。

如果您遇到困难,现在就让我:)