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

Ruby on rails 基于另一个选择框更新选择框(Ruby on Rails),ruby-on-rails,rjs,Ruby On Rails,Rjs,我需要一个更完整的例子,说明如何根据RubyonRails中第二个选择框的结果更新选择框。我已经问过了。我已经通读了那个帖子的反馈,但我没有任何运气弄明白这一点,我已经试了几个小时了。有谁知道一个更好更完整的例子吗?这通常是用Javascript处理的。我并不特别喜欢编写Javascript,所以在我的应用程序中,我要做的就是使用form_observer一个Rails助手,它使用原型Javascript库监视表单的输入更改,并根据AJAX调用的结果更新包含第二个选择框的HTML中的DIV。由于

我需要一个更完整的例子,说明如何根据RubyonRails中第二个选择框的结果更新选择框。我已经问过了。我已经通读了那个帖子的反馈,但我没有任何运气弄明白这一点,我已经试了几个小时了。有谁知道一个更好更完整的例子吗?

这通常是用Javascript处理的。我并不特别喜欢编写Javascript,所以在我的应用程序中,我要做的就是使用form_observer一个Rails助手,它使用原型Javascript库监视表单的输入更改,并根据AJAX调用的结果更新包含第二个选择框的HTML中的DIV。由于AJAX与我的服务器通信,我可以用Ruby编写任意复杂的逻辑来呈现新的HTML

示例代码:

#goes in view
<%= Code to render the first list box. %>
<%= render :partial => 'second_list_box_partial', :locals => {:selected = insert_magic_here } %>

<%= observe_field(:first_list_box,
    :url => { :action => :second_box_ajax }),
    :frequency => 0.5,
    :update => :second_list_box_div,
    :with => %Q| 'value=' + $('first_list_box').value;   |
    %>

#goes in controller
 def second_box_ajax
   first_box_value = params[:value]
   #magic goes here
   @selected = #more magic
   render :partial => 'second_list_box_partial', :locals => {:selected => @selected}, :layout => false
 end

 #goes in partial
 <div id="second_list_box_div">
   Actual code to render list box goes here.
 </div>

这通常用Javascript处理。我并不特别喜欢编写Javascript,所以在我的应用程序中,我要做的就是使用form_observer一个Rails助手,它使用原型Javascript库监视表单的输入更改,并根据AJAX调用的结果更新包含第二个选择框的HTML中的DIV。由于AJAX与我的服务器通信,我可以用Ruby编写任意复杂的逻辑来呈现新的HTML

示例代码:

#goes in view
<%= Code to render the first list box. %>
<%= render :partial => 'second_list_box_partial', :locals => {:selected = insert_magic_here } %>

<%= observe_field(:first_list_box,
    :url => { :action => :second_box_ajax }),
    :frequency => 0.5,
    :update => :second_list_box_div,
    :with => %Q| 'value=' + $('first_list_box').value;   |
    %>

#goes in controller
 def second_box_ajax
   first_box_value = params[:value]
   #magic goes here
   @selected = #more magic
   render :partial => 'second_list_box_partial', :locals => {:selected => @selected}, :layout => false
 end

 #goes in partial
 <div id="second_list_box_div">
   Actual code to render list box goes here.
 </div>

好的,我得到一个错误,表示散列的奇数列表,它指向视图中:selected的末尾。而且我也不知道这里的魔法是什么。这是Ruby中内置的吗?好吧,我得到一个错误,显示散列的奇数列表,它指向视图中:selected的末尾。而且我也不知道这里的魔法是什么。这是Ruby内置的吗?