【问题标题】:updating a select box based on another (Ruby on Rails)更新基于另一个选择框(Ruby on Rails)
【发布时间】:2010-12-27 21:52:53
【问题描述】:

我需要一个更完整的示例,说明如何根据 Ruby on Rails 中第二个选择框的结果更新选择框。我已经问过这个问题here。我已经阅读了该帖子的反馈,但没有任何运气弄清楚这一点,而且我已经尝试了几个小时。有人知道更好(更完整)的例子吗?

【问题讨论】:

    标签: ruby-on-rails rjs


    【解决方案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>
    

    【讨论】:

    • 好吧,我收到一个错误,上面写着“哈希的奇数列表”,它指向视图中“:selected”的末尾。另外我不知道 insert_magic_here 是什么。这是 Ruby 内置的东西吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-09
    • 2022-01-27
    • 1970-01-01
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多