基于另一个选择框更新一个选择框(Ruby on Rails)

我是Ruby on Rails的新手,需要一些帮助。

我正在开发一个可用于跟踪汽车的Web应用程序。 有两种型号,一种代表品牌(萨博,本田,丰田等),另一种代表型号(思域,Miata,PT Cruiser等)。 他们有“has_many”关系:

script/generate scaffold make name:string script/generate scaffold model name:string make_id:integer 

我创建了一个带有两个选择框的视图(使用select helper方法创建),一个用于make,一个用于模型。

这就是我无法弄清楚如何做的事情:我希望第二个选择框只能填充与第一个选择的make相对应的模型。 当第一个选择框中的make更改时,第二个中的模型也应该更改。

多谢你们!

您将要在第一个make选择框上创建一个ajax观察者,该选择框更新第二个选择框。 类似于以下内容:

 &lt%= select :make,:id, @makes %> &lt div id = "model_select"> &lt/div> &lt%= observe_field :make_id, :url => model_select_makes_path, #or whatever :with=>"make_id"%> 

然后在你的make_controller中:

 def model_select make = Make.find(params[:make_id]) @models = make.models respond_to do |format| format.js end end 

然后使用像这样的rjs partial或者渲染:在控制器中更新:

 page.replace_html "model_select", :partial => "model_select" 

并且model_select.html.erb将具有使用@models呈现模型选择器的html,类似于:

 <%= select_tag :model, :id, @models %> 

您只需编写一段JavaScript,当“make”选择框发生变化时,通过AJAX提交表单,然后在服务器端使用RJS视图将您的名字输入第二个选择框。