2017-07-23 15 views
-1

如何使這兩個f.select與數組之間存在依賴關係? 我想要的是,對於每個模型而言,只會提供某些年份,而不是全部。窗體軌道中兩個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

什麼沒有工作?你的期望是什麼? – Nithin

+0

@Nithin,我厭倦了使動態表單之間沒有Ajax相互依賴... –

回答

0

我想我明白了。

您可能希望根據所選模型更改按年選擇 提供的選項。

這種情況的一個非常常見的解決方案是使用AJAX渲染依賴字段。在你的情況下,當模型選擇中發生change事件時,你應該更新年選項

下面是關於這是一個非常教學教程:

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

PS:我真的建議在數據庫表中堅持型號和年份的數據。一旦你將使用Active Record來抽象你的數據和關係,這種方法將更加乾淨和有效。

如果你有困難,讓我現在:)

+0

加布裏埃爾戈麥斯,非常感謝鏈接!我非常新近使用Ajax ....)並嘗試僅使用純Rails進行操作。但我認爲這是不可能的,因爲它是瀏覽器的工作.. ...我爲這種情況創建了數據庫,當然,這裏顯示的數組只能更好地查看。 這種情況下的關係是「has_and_belongs_to_many」,但我必須添加新的字段(:修剪,:引擎,:顏色等),我想在此之後它將「has_many通過」... –

+0

@AllaJohnson我是很高興我幫你。如果你可以在答案中加一個+1,我將非常感謝:) –

+0

@AllaJohnson我認爲在沒有DB的情況下解決這個問題並不是不可能的。但你有很多缺點。因爲許多模型可能與同一年有關(has_and_belongs_to_many關係)。所以這意味着定義和手動處理的開銷。 –