【问题标题】:Updating one select box based on another (Ruby on Rails)基于另一个更新一个选择框(Ruby on Rails)
【发布时间】:2009-12-17 23:18:35
【问题描述】:

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

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

script/generate scaffold make name:string

script/generate scaffold model name:string make_id:integer

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

这是我在弄清楚如何做时遇到的问题:我希望第二个选择框仅填充与第一个选择的品牌相对应的模型。在第一个选择框中进行更改时,第二个选择框中的模型也应更改。

谢谢大家!

【问题讨论】:

    标签: javascript ruby-on-rails


    【解决方案1】:

    您需要在第一个 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 部分,要么在控制器中渲染:更新:

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

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

    
      &lt%= select_tag :model, :id, @models %>
    

    【讨论】:

    • 抱歉,我无法遵循此代码。我需要一个更完整的例子。我是一个全新的初学者。
    • 您不会比问答网站上的内容更具体。尝试搜索博客。这可能有效:rails.brentsowers.com/2008/02/…
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多