2009-12-18 91 views
1

我需要一个更完整的示例,了解如何根据Ruby on Rails中第二个选择框的结果更新选择框。我问了这个已经here。我已经阅读了这篇文章的反馈,但是没有什么好运气,我已经尝试了好几个小时。任何人都知道更好(更完整)的例子吗?更新基于另一个选择框(Ruby on Rails)

回答

1

这通常在Javascript中处理。我不是特别喜欢编码Javascript,所以我在我的应用程序中做的是使用form_observer(一个Rails帮助器,它使用Prototype Javascript库来观察表单的输入变化),并在HTML中更新DIV第二个选择框,基于AJAX调用的结果。由于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> 
+0

的感谢!我现在要测试这个代码并回复给你... – Kara 2009-12-18 04:54:34

+0

好吧,我得到一个错误,说“奇数号哈希列表”,它指出了“:选定”的结尾风景。另外我不知道insert_magic_here是什么。这是Ruby内置的东西吗? – Kara 2009-12-18 05:00:45